为什么“return list.sort()”返回None,而不是列表?
我已经能够验证findUniqueWords
确实导致排序的list
。但是,它不return
list
,为什么?为什么“return list.sort()”返回None,而不是列表?
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
回答:
list.sort
就地对列表进行排序,即它不返回新列表。只要写
newList.sort() return newList
回答:
请重新阅读了Python sort
函数的文档,专注于它的返回值。
回答:
的问题是在这里:
answer = newList.sort()
sort
不返回排序列表;相反,它将这个列表排序。
用途:
answer = sorted(newList)
回答:
的Python习惯性地返回None
从功能和变异数据的方法,如list.sort
,list.append
和random.shuffle
,与想法是,它暗示一个事实,即它是变异。
如果您想获取迭代并返回其项目的新排序列表,请使用sorted
内置函数。
回答:
Here是吉多·范罗苏姆在Python的开发列表explainig为什么他选择不上,影响该对象并不会返回一个新的操作返回self
的电子邮件。
这来自一种编码风格(在其他各种语言的流行,我 相信尤其是Lisp的陶醉在其中),其中单个对象的一系列副作用 可以链接如下:
x.compress().chop(y).sort(z)
这将是相同的
x.compress()
x.chop(y)
x.sort(z)
我找到链接形成可读性的威胁;它要求读者必须非常熟悉每种方法。 第二种形式清楚地表明,这些呼叫中的每一个都作用于同一个对象,所以即使您不知道该类及其方法非常好,您也可以理解第二次和第三次呼叫适用于 x(并且所有呼叫都是为了他们的副作用),而不是 。
我想预订链接用于返回新值, 像字符串处理操作的操作:
y = x.rstrip("\n").split(":").lower()
回答:
的Python有两种各种各样的:一种方法(或“成员函数“)和函数。排序方法对名为对象的内容进行操作 - 将其视为该对象正在采取的操作来重新排序。排序功能是对由对象表示的数据执行的操作,并以排序顺序返回具有相同内容的新对象。
给定一个名为整数列表l
如果我们调用l.sort()
列表本身将被重新排序:>>> l = [1, 5, 2341, 467, 213, 123]
>>> l.sort()
>>> l
[1, 5, 123, 213, 467, 2341]
这个方法没有返回值。但是如果我们试图指定l.sort()
的结果呢?
>>> l = [1, 5, 2341, 467, 213, 123] >>> r = l.sort()
>>> print(r)
None
r
现在实际上等于一无所有。这是程序员在离开Python一段时间后可能会忘记的那些奇怪的,有些烦人的细节之一(这就是为什么我写这个,所以不要再忘记)。
功能sorted()
,而另一方面,也不会做任何的l
内容,但会返回一个新的,分类具有相同的内容列表,l
:
>>> l = [1, 5, 2341, 467, 213, 123] >>> r = sorted(l)
>>> l
[1, 5, 2341, 467, 213, 123]
>>> r
[1, 5, 123, 213, 467, 2341]
注意,返回值是不一个deep copy,所以要谨慎在包含在列表中照常内的元件侧effecty操作:
>>> spam = [8, 2, 4, 7] >>> eggs = [3, 1, 4, 5]
>>> l = [spam, eggs]
>>> r = sorted(l)
>>> l
[[8, 2, 4, 7], [3, 1, 4, 5]]
>>> r
[[3, 1, 4, 5], [8, 2, 4, 7]]
>>> spam.sort()
>>> eggs.sort()
>>> l
[[2, 4, 7, 8], [1, 3, 4, 5]]
>>> r
[[1, 3, 4, 5], [2, 4, 7, 8]]
以上是 为什么“return list.sort()”返回None,而不是列表? 的全部内容, 来源链接: utcz.com/qa/258995.html