今天我在做一些python列表操作时发现了一个奇怪的行为。
让我们说,
a = []
b = 'xy'
当我这样做时,解释器返回+ = b:
a += b
a == ['x', 'y']
但是当我这样做时,+ = b,(用逗号),解释器返回= [' xy']
a += b,
a == ['xy']
有人可以解释这里发生的事情。
答案 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']