pts*_*pts 59

list.append(1) 更快,因为它不会创建临时列表对象.

  • 不是"哪个更pythonic?"的问题 (13认同)
  • +1 - 答案和解释都很好.简洁而重要.谢谢. (8认同)
  • @ojrac:更快的是更多的Pythonic,因为Python开发人员倾向于优化他们鼓励的行为. (3认同)
  • 而"哪个更pythonic?" 是个问题."更快"这个词完全偏离主题,除非这两种方法都存在严重问题. (2认同)

joc*_*oce 54

来自Python禅宗:

显式优于隐式.

所以: list.append(1)

  • IMO,运算符的功能名称不太明确. (17认同)
  • 是`list + = list`不明确? (9认同)
  • 您可能还会认为`[1,2] + = [3] => [1,2,[3]]` (7认同)
  • 作为运算符不如命名函数明确的例子:'list + = list'是什么意思?阅读它,我可以考虑追加,但我也可以认为你可能想要在数值列表中添加值(例如[1,2,3] + = [4,5,6] => [5,7 ,9]可能有意义). (3认同)

ism*_*ail 17

这是两个不同的操作,你正在做什么+ =是扩展操作.以下是Python文档对此的说法:

list.append(x):将一个项添加到列表的末尾; 相当于[len(a):] = [x].

list.extend(L):通过附加给定列表中的所有项来扩展列表; 相当于[len(a):] = L.

所以在+ =你提供一个列表,在附加你只需添加一个新元素.


drr*_*lvn 7

既然也有

list.extend(l)
Run Code Online (Sandbox Code Playgroud)

我会使用它附加给定列表的所有元素

list.append(1)
Run Code Online (Sandbox Code Playgroud)

为了对称和可读性的缘故.


Unk*_*own 6

虽然这里的大多数人都喜欢附加选项,但我个人更喜欢另一个,因为它看起来更好,即使它可能更慢(或者可能是它的优化).

美丽胜过丑陋.

当你编写很多Python代码时,我通常不会看到这样的东西:

list.append(1)
Run Code Online (Sandbox Code Playgroud)

它更像是这样的:

somecollectionname.append(anotherelementname+5*10)
Run Code Online (Sandbox Code Playgroud)

至少对我来说,看到它更好:

somecollectionname += [anotherelementname+5*10]
Run Code Online (Sandbox Code Playgroud)

因为它很容易识别您正在添加到列表中.话虽如此,我有时会发现自己使用这两种形式.