我已经能够验证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

当前回答

Python习惯地从改变数据的函数和方法中返回None,例如list。排序,列表。追加,随机。Shuffle,意思是它暗示了它正在变异的事实。

如果你想接受一个可迭代对象,并返回一个新的、已排序的可迭代对象项列表,请使用sorted内置函数。

其他回答

列表。Sort对列表进行排序,即它不会返回一个新的列表。只写

newList.sort()
return newList

如果想让它返回排序后的列表,可以使用sorted()方法。 这样更方便。

l1 = []
n = int(input())

for i in range(n):
  user = int(input())
  l1.append(user)
sorted(l1,reverse=True)

list.sort()方法就地修改列表并返回None。

如果你还想使用排序,你可以这样做。

l1 = []
n = int(input())

for i in range(n):
  user = int(input())
  l1.append(user)
l1.sort(reverse=True)
print(l1)

这是我在其他答案中没有看到的一个小智慧:

python中所有修改列表的可变对象(如列表)的方法都返回None。因此,对于列表,这也包括list.append(), list.reverse()等。这就是为什么语法应该是

myList.sort()

同时,任何不可变对象(比如字符串)的方法都必须这样赋值:

myString = myString.strip()

问题就在这里:

answer = newList.sort()

Sort不会返回已排序的列表;相反,它对列表进行了适当的排序。

Use:

answer = sorted(newList)

要理解为什么它不返回列表:

Sort()方法不返回任何值,而Sort()方法只是按特定顺序对给定列表中的元素进行排序——升序或降序,而不返回任何值。

所以问题是answer = newList.sort(),其中答案为none。

相反,你可以只返回newList.sort()。

sort()方法的语法是:

list.sort(key=..., reverse=...)

或者,你也可以使用Python的内置函数sorted()来达到同样的目的。

sorted(list, key=..., reverse=...)

注意:sort()和sorted()之间最简单的区别是:sort()不返回任何值,而sorted()返回一个可迭代列表。

在这里,answer = sorted(newList)