3

可能重复:
LIST.append(1) 和 LIST = LIST + [1] (Python) 有什么区别

我是 Python 新手,也是编程新手。我遵循了 ThinkPython 这本书,这是我无法理解的一件事。

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

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

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

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

4

2 回答 2

5
t = t + [x]

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

t += [x]

调用直接作用于列表本身的t' 方法。__iadd__没有创建额外的列表。

于 2012-12-07T12:48:56.163 回答
0

首先,您需要知道,add方法会创建一个新对象,而 append() 只是修改现有对象,从而获得更好的性能。

至于第二个问题,了解以上内容后,您可能会发现'+='或'plus equals'运算符在python中是等价的,因此与'+'运算符的行为不同。

您可能还想查看此链接,该链接解释了在您的示例中调用的addiadd方法之间的区别,也许也是为了建立您的知识。

于 2012-12-07T13:15:25.960 回答