当前位置: 首页 > 知识库问答 >
问题:

为什么“return list.sort()”返回None而不是列表?

薛望
2023-03-14

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

共有3个答案

万承志
2023-03-14

下面是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()
商燕七
2023-03-14

问题就在这里:

answer = newList.sort()

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

使用:

answer = sorted(newList)
颛孙成益
2023-03-14

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进行三重检查。