[英]Iteratively add elements to a list
我试图在Python中添加列表的元素,从而生成列表的列表。 假设我有两个列表a = [1,2]
和b = [3,4,5]
。 如何构建以下列表:
c = [[1,2,3],[1,2,4],[1,2,5]] ?
在我徒劳地尝试生成c
,我偶然发现了一个错误的Python观念,下面将对此进行描述。 有人对本段末尾提出的概念性问题有所阐述,我将不胜感激。 我试图(除其他外)生成c
,如下所示:
c = []
for i in b:
temp = a
temp.extend([i])
c += [temp]
使我感到困惑的是, a
似乎已被温度覆盖。 为什么会这样? Python似乎在数学意义上使用了=
运算符,但未将其用作赋值(在数学中以:=表示)。
您不是要创建副本。 temp = a
只是使temp
引用相同的列表对象。 结果, temp.extend([i])
扩展a
引用的相同列表对象 :
>>> a = []
>>> temp = a
>>> temp.extend(['foo', 'bar'])
>>> a
['foo', 'bar']
>>> temp is a
True
您可以使用列表理解来构建c
:
c = [a + [i] for i in b]
通过串联而不是扩展,您可以在每次迭代中创建一个新的列表对象。
你可以代替也取得的实际拷贝a
具有:
temp = a[:]
身份切片(从头到尾切片)将创建一个包含浅表副本的新列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.