我已经能够验证FindUniqueWords
是否会产生排序的列表
。但是,它不会返回列表。为什么?
def findUniqueWords(theList):
newList = []
words = []
# Read a line at a time
for item in theList:
# Remove any punctuation from the line
cleaned = cleanUp(item)
# Split the line into separate words
words = cleaned.split()
# Evaluate each word
for word in words:
# Count each unique word
if word not in newList:
newList.append(word)
answer = newList.sort()
return answer
下面是Guido van Rossum在Python的开发列表中的一封电子邮件,解释了为什么他选择不返回影响对象的self
操作,而不返回新的操作。
这来自一种编码风格(在其他各种语言中都很流行,我相信尤其是Lisp为之陶醉),在这种风格中,单个对象上的一系列副作用可以像这样连锁起来:
x.compress().chop(y).sort(z)
这将与
x.compress()
x.chop(y)
x.sort(z)
我发现链接形式对可读性有威胁;它要求读者必须非常熟悉每一种方法。第二种形式清楚地表明,这些调用中的每一个都作用于同一个对象,因此,即使您不太了解类及其方法,也可以理解第二个和第三个调用是应用于x的(并且所有调用都是针对它们的副作用进行的),而不是应用于其他对象。
我想为返回新值的操作保留链接,如字符串处理操作:
y = x.rstrip("\n").split(":").lower()
问题就在这里:
answer = newList.sort()
sort
不返回已排序的列表;相反,它对列表进行了适当的排序。
使用:
answer = sorted(newList)
list.sort
对列表进行排序,即它不返回新列表。只管写
newList.sort()
return newList
问题内容: 我已经能够验证结果是否为。但是,它不返回列表。为什么? 问题答案: 对列表进行适当排序,即不返回新列表。写吧
问题内容: 为什么要用Python返回? 我如何获得改组后的值而不是? 问题答案: 更改列表 到位 。 在原位更改结构的Python API方法通常返回,而不是修改后的数据结构。 如果要基于现有列表创建 新的 随机混排列表,并按顺序保留现有列表,则可以使用输入的完整长度: 您还可以将with用于排序键: 但这会调用排序(O(NlogN)操作),而采样到输入长度仅需要O(N)操作(与所使用的过程相同
问题内容: 我正在学习理解力。我得到了print(x)部分(我认为。它打印通过了’in’测试的x的值),但是为什么以后还返回None列表呢? 问题答案: 您使用列表理解来打印列表中的项目,然后打印列表本身。尝试将列表分配给变量。 现在,该列表以x表示,没有打印出来。清单还在那里…
问题内容: 为什么要用返回? 我如何获得改组后的值而不是? 问题答案: 更改x列表到位。 就地更改结构的方法通常返回None,而不是修改后的数据结构。 如果要基于现有列表创建新的随机混排列表,并按顺序保留现有列表,则可以使用输入的完整长度: 你还可以将用于排序键: 但这会调用排序(操作),而采样到输入长度仅需要O(N)操作(与所使用的过程相同,即从收缩池中换出随机值)。 演示:
问题内容: 不确定此问题是否特定于该语言以及如何在中实现。 问题答案: append是一种变异(破坏性)操作(它会在适当位置修改列表,而不是返回新列表)。进行无损等效的惯用方式append是 回答你的问题,我的猜测是,如果返回新修改的列表,用户可能会认为它是非破坏性的,即他们可能会编写如下代码 并期望成为
问题内容: 我正在尝试使用Python(3.4)MySQL模块通过以下代码在本地MySQL数据库上进行查询: 据我所知,连接成功,数据库由几行组成,但是查询始终返回none类型。 MySQL执行功能哪些实例返回None? 问题答案: 查询执行没有返回值。 您需要遵循的模式是: 或在python中: 还有一些数据库模块允许您使用for … in模式遍历游标,但对mysql进行三重检查。