list + = str和list + = str有什么区别,

时间:2017-01-27 01:12:41

标签: python string list

今天我在做一些python列表操作时发现了一个奇怪的行为。

让我们说,

a = []
b = 'xy'

当我这样做时,解释器返回+ = b:

a += b
a == ['x', 'y']

但是当我这样做时,+ = b,(用逗号),解释器返回= [' xy']

a += b,
a == ['xy']

有人可以解释这里发生的事情。

3 个答案:

答案 0 :(得分:3)

a += b

a是列表时,此操作类似于a.extend(b)。因此,它迭代对象b,将每个元素追加到a

如果您迭代字符串'xy',则会生成两个元素'x''y'

如果你迭代元组'xy',,它会产生一个元素'xy'

答案 1 :(得分:2)

该行

a += b,

相当于

a += (b, )

它创建一个包含一个项目的元组。如果已添加,则会将'xy'项添加到a

如果你添加一个像'xy'这样的字符串,它就会被视为一个字符序列,并且每个序列项(字符)都会单独添加到a

所以基本上逗号将b包装成一个元组。

答案 2 :(得分:1)

逗号创建tuple - 因此a += b,a += (b,)

相同
a += ('xy', )

你添加一个元素的元组,所以它几乎像

a += ['xy']

所以你有

a = [] + ['xy']

给出结果

a = ['xy']