当前位置:  开发笔记 > 编程语言 > 正文

为什么“追加”在我的Python代码中无法正常工作?

如何解决《为什么“追加”在我的Python代码中无法正常工作?》经验,为你挑选了1个好方法。

我下载了Google的Python练习,这是问题之一:

给定一个字符串列表,返回字符串长度为2或更大且字符串的第一个和最后一个字符相同的字符串数的计数

我对此的回答如下:

def match_ends(words):
  a=[]
  for word in words:
    if len(word)>=2 and word[0]==word[-1]:
      a=a.append(word)
    return len(a)

但是,对于此列表:

words=['aba', 'xyz', 'aa', 'x', 'bbb']

它只返回“ 1”。我不明白,为什么append在转弯时不添加所有与之匹配的字符串。

这是Google的解决方案:

def match_ends(words):
  count = 0
  for word in words:
    if len(word) >= 2 and word[0] == word[-1]:
      count = count + 1
  return count

Willem Van O.. 5

这里有两个问题:

缩进问题:

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a = a.append(word)
    返回len(a)

return语句放置for循环中,这意味着仅重复一遍,您将返回一个答案(零或一)。因此您可以像这样解决此问题:

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a = a.append(word)
  返回len(a)

此外,您将的结果分配a.append(word)a.append然而收益None(实际上.append不返回任何东西,所以Python让它自动返回None),所以下一个迭代,a是不是list再和程序就会崩溃。因此,替换a = a.append(word)a.append(word)

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a.append(word)
  返回len(a)

现在您的程序将运行。但是,存储所有匹配的单词是没有用的,因为您只想对它们进行计数。如果找到匹配项,最好使用一个计数器并递增该计数器,因为这不需要额外的内存。Google的答案因此更加有效



1> Willem Van O..:

这里有两个问题:

缩进问题:

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a = a.append(word)
    返回len(a)

return语句放置for循环中,这意味着仅重复一遍,您将返回一个答案(零或一)。因此您可以像这样解决此问题:

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a = a.append(word)
  返回len(a)

此外,您将的结果分配a.append(word)a.append然而收益None(实际上.append不返回任何东西,所以Python让它自动返回None),所以下一个迭代,a是不是list再和程序就会崩溃。因此,替换a = a.append(word)a.append(word)

def match_ends(words):
  a = []
  逐字逐句:
    如果len(word)> = 2且word [0] == word [-1]:
      a.append(word)
  返回len(a)

现在您的程序将运行。但是,存储所有匹配的单词是没有用的,因为您只想对它们进行计数。如果找到匹配项,最好使用一个计数器并递增该计数器,因为这不需要额外的内存。Google的答案因此更加有效

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有