簡體   English   中英

在Python中附加到多維數組

[英]Appending to a multi-dimensional array in Python

我有以下代碼:

philips_trousers = []
for i in range(0, 5):
  philips_trousers.append(["T"] * 5)
  philips_trousers.append(["R"] * 5)
  philips_trousers.append(["O"] * 5)
  philips_trousers.append(["U"] * 5)
  philips_trousers.append(["S"] * 5)
  philips_trousers.append(["E"] * 5)
  philips_trousers.append(["R"] * 5)
  philips_trousers.append(["S"] * 5)
print philips_trousers

輸出以下內容:

[['T', 'T', 'T', 'T', 'T'], ['R', 'R', 'R', 'R', 'R'], ['O', 'O', 'O', 'O', 'O'], ['U', 'U', 'U', 'U', 'U'], ['S', 'S', 'S', 'S', 'S'], ['E', 'E', 'E', 'E', 'E'], ['R', 'R', 'R', 'R', 'R'], ['S', 'S', 'S', 'S', 'S'], ['T', 'T', 'T', 'T', 'T'], ['R', 'R', 'R', 'R', 'R'], ['O', 'O', 'O', 'O', 'O'], ['U', 'U', 'U', 'U', 'U'], ['S', 'S', 'S', 'S', 'S'], ['E', 'E', 'E', 'E', 'E'], ['R', 'R', 'R', 'R', 'R'], ['S', 'S', 'S', 'S', 'S'], ['T', 'T', 'T', 'T', 'T'], ['R', 'R', 'R', 'R', 'R'], ['O', 'O', 'O', 'O', 'O'], ['U', 'U', 'U', 'U', 'U'], ['S', 'S', 'S', 'S', 'S'], ['E', 'E', 'E', 'E', 'E'], ['R', 'R', 'R', 'R', 'R'], ['S', 'S', 'S', 'S', 'S'], ['T', 'T', 'T', 'T', 'T'], ['R', 'R', 'R', 'R', 'R'], ['O', 'O', 'O', 'O', 'O'], ['U', 'U', 'U', 'U', 'U'], ['S', 'S', 'S', 'S', 'S'], ['E', 'E', 'E', 'E', 'E'], ['R', 'R', 'R', 'R', 'R'], ['S', 'S', 'S', 'S', 'S'], ['T', 'T', 'T', 'T', 'T'], ['R', 'R', 'R', 'R', 'R'], ['O', 'O', 'O', 'O', 'O'], ['U', 'U', 'U', 'U', 'U'], ['S', 'S', 'S', 'S', 'S'], ['E', 'E', 'E', 'E', 'E'], ['R', 'R', 'R', 'R', 'R'], ['S', 'S', 'S', 'S', 'S']]

到目前為止,您可能一直在思考,但是我想知道一些事情philips_trousers為什么以這種方式填充philips_trousers 也就是說,為什么append()函數以['T', 'T', 'T', 'T', 'T']['R', 'R', 'R', 'R', 'R']等,而不是: ['T', 'R', 'O', 'U', 'S', 'E', 'R', 'S']

["T"] + ["T"]["T", "T"] 乘法只是幾次加法。 因此, ["T"] * 5["T", "T", "T", "T", "T"] 1相同 您在結束列表中看到的是幾個這樣的列表。 如果要一堆["T", "R", "O", ...] ,可以執行以下操作:

philips_trousers = []

for _ in range(5):
    philips_trousers.append(list("TROUSERS"))

print philips_trousers

這幾乎是Remuze答案的簡短版本。


1請勿對可變對象使用列表乘法,因為列表中的每個項目都是相同的對象 這意味着修改一個將全部修改它們。

["T"] * 5首先被轉換為[['T'],['T'],['T'],['T'],['T']] ,然后將其附加到空數組。 然后,其他每個字母都發生相同的情況。

要獲得所需的功能,請嘗試以下操作:

philipsTrousers = []
for i in range(0, 5):
  philipsTrousers.append(["T","R","O","U","S","E","R","S"])
print philipsTrousers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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