的insert方法有助于在预期输出lst = [((1,2), (3, 4))]的lst中添加元素((1,2), (3, 4)),
1 2 3
| lst = []
lst.insert(0, ((1,2), (3, 4)))
lst.insert(1, ((5, 6), (7, 8))) |
但+=运算符给出的结果不同(lst = [(1, 2), (3, 4)])。
1 2
| lst = []
lst += ((1,2), (3, 4)) |
号
+=运算符内部调用__iadd__方法。
为什么__iadd__不按class <'list'>的insert(index,element)方法添加元素?因为在合并排序代码中维护索引需要额外的名称-值对,这是一个很大的开销。
- @Simeonvisser在你以前的问题中,+=和+之间没有冲突。+=并不改变lst的引用,但是引用的变化与添加元素((1,2), (3, 4))有什么关系。
- @vaultah你的老问题建议使用extend方法。你认为这是我的问题吗?
- 1、2、3、4等的副本
- 列表+=运算符不添加单个值,而是添加来自iterables的值。例如,您可以尝试lst += [((1,2), (3, 4))]。
x += y,其中x和y为列表形式,将创建一个新的列表,其中y的内容与x的内容相连接。
由于您不想将tuple ((1,2), (3, 4))的内容附加到lst中,而是希望将tuple添加到列表中,因此您应该将lst.append(((1,2), (3, 4)))添加到列表中。
1 2 3 4 5
| >>> lst = []
>>> lst.append(((1, 2), (3, 4)))
>>> lst.append(((5, 6), (7, 8)))
>>> lst
[((1, 2), (3, 4)), ((5, 6), (7, 8))] |