簡體   English   中英

迭代地將元素添加到列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM