可变序列添加多个元素
2020-04-24 本文已影响0人
eeert2
对于 可变序列list,collections.deque,我们添加一个元素可以通过
-
.append(value)尾部添加 -
.insert(index, value)指定下标插入
对可变序列添加多个元素呢 ?
- 第一种,通过
+完成
if __name__ == '__main__':
data = [1, 3, 5]
target = [2, 4, 6]
ret = data + target
data += target
print(data) # [1, 3, 5, 2, 4, 6]
这种方法有需要注意的地方,+ 前后的两个参数类型必须相同
- 第二种,通过
.extend()或者+=
对于第一种情况的限制,可以通过.extend()或者+=来实现的
def target():
"""生成器"""
for value in range(5):
yield value
if __name__ == '__main__':
data = []
data.extend(target())
print(data)
三、备注
网上有说+=与.extend()效果相同的,甚至说+=调用了.extend()。实际上这种说法是不对的。
+=在完成数据扩展后有一步将自身引用, 赋值给自身的操作
如下:使用 extend()可以正常进行
if __name__ == '__main__':
test = (1, 2, [3])
test[2].extend(target())
print(test) # (1, 2, [3, 0, 1, 2, 3, 4])
使用 += 就会报错:
if __name__ == '__main__':
test = (1, 2, [3])
test[2]+=target()
print(test)
>>> TypeError: 'tuple' object does not support item assignment