Python通过两种不同的方法构建列表

时间:2012-12-07 12:45:51

标签: python list append

  

可能重复:
  What is the difference between LIST.append(1) and LIST = LIST + [1] (Python)

我是Python的新手,也是编程新手。我跟着ThinkPython这本书,这是我无法直接做的一件事。

  

练习10.7编写一个读取文件words.txt的函数,并构建一个每个单词含一个元素的列表。写下这个函数的两个版本,一个使用append方法,另一个使用idiom t = t + [x]。哪一个需要更长时间才能运行?为什么呢?

我尝试了两种方法,发现后一种方法(t = t + [x])花费的时间比追加方法长得多。这是我的第一个问题,为什么会发生这种情况?

我将t = t + [x]行更改为t + = [x]只是为了找到这个修订版本几乎与append方法相同的时间。我认为t = t + [x]等于t + = [x],显然它们不是。为什么?

顺便说一句:我尝试使用python + =作为关键词搜索谷歌,但似乎谷歌不会把+ =作为关键词,即使我给它加了一个引号。

2 个答案:

答案 0 :(得分:5)

t = t + [x]

使用t,与[x](调用t的方法__add__)连接,创建一个新列表,然后将其命名为t

t += [x]

调用t的方法__iadd__,该方法直接在列表本身上运行。没有创建额外的列表。

答案 1 :(得分:0)

首先,您需要知道add方法会导致创建新对象,而append()只需修改现有对象,从而提高性能。

至于第二个问题,知道上面的内容,你可以find out'+ ='或'加上等于'运算符在python中是等价的,因此与'+'运算符的行为不同。

您可能还想查看this link,它解释了在您的示例中调用的添加 iadd 方法之间的区别,也许{{3}以及建立你的知识。