对于 可变序列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
网友评论