簡體   English   中英

如何將這些元素附加到python中的數組?

[英]How can I append this elements to an array in python?

input_elements = ["a", "b", "c", "d"]
my_array = ["1", "2", "3", "4"]

我想要的輸出是:

["1", "2", "3", "4", "a"]
["1", "2", "3", "4", "b"]
["1", "2", "3", "4", "c"]
["1", "2", "3", "4", "d"]

我試過了:

for e in input_elements:
  my_array.append(e)

我知道上面的代碼是錯誤的,所以我想知道如何生成這樣的輸出。

您可以使用列表解析來解決您的問題。

>>> input_elements = ["a", "b", "c", "d"]
>>> my_array = ["1", "2", "3", "4"]
>>> [my_array+[i] for i in input_elements]

結果看起來像

>>> from pprint import pprint
>>> pprint([my_array+[i] for i in input_elements])
[['1', '2', '3', '4', 'a'],
 ['1', '2', '3', '4', 'b'],
 ['1', '2', '3', '4', 'c'],
 ['1', '2', '3', '4', 'd']]

請參閱“列表理解”是什么意思? 它是如何工作的,我該如何使用它? 有關它們的更多詳細信息。

您需要在循環中復制舊列表:

input_elements = ["a", "b", "c", "d"]
my_array = ["1", "2", "3", "4"]
new_list = []
for e in input_elements:
  tmp_list = list(my_array)
  tmp_list.append(e)
  new_list.append(tmp_list)

print(new_list)

輸出:

[['1', '2', '3', '4', 'a'], ['1', '2', '3', '4', 'b'], ['1', '2', '3', '4', 'c'], ['1', '2', '3', '4', 'd']]

需要注意的是tmp_list = list(my_array)使得新副本my_array

通過使tmp-list隱含,可以縮短上述內容:

input_elements = ["a", "b", "c", "d"]
my_array = ["1", "2", "3", "4"]
new_list = []
for e in input_elements:
  new_list.append(my_array + [e]) # the temporary copy is implicit
print(new_list)

然后可以使用lambdas進一步縮短上面的內容(在本例中基本上隱含了循環):

input_elements = ["a", "b", "c", "d"]
my_array = ["1", "2", "3", "4"]
new_list = [my_array + [e] for e in input_elements]
print(new_list)

我假設您得到的輸出是:

['1', '2', '3', '4', 'a', 'b', 'c', 'd']

...因為,這就是我得到的。

問題是,在你的循環中,你只是在現有數組中添加一個新元素,然后打印“總計”。 所以,你添加一個,然后添加b,然后你添加c,然后d ... all到同一個數組,然后打印出整個shebang。

對於您的特定問題,最簡單的解決方案是,在您的for循環中,按原樣打印數組,並將e選擇連接起來。 像這樣:

input_elements = ["a", "b", "c", "d"]
my_array = ["1", "2", "3", "4"]

for e in input_elements:
  print my_array + [e]

這樣,您將使用額外元素打印數組,而不會實際影響原始數組...保持“干凈”以循環返回並添加下一個元素。

此方法允許您實現所需的結果,而不必導致額外的內存分配或不必要的變量。

如果你在for循環期間還有其他事情要做,你可以隨時添加元素,然后在使用pop函數處理后將其刪除,如下所示:

for e in input_elements:
  my_array.append(e)
  print my_array
  # Do some other nifty stuff
  my_array.pop()

另一種選擇是使用List Comprehension,它允許您迭代數組作為更多的固有語句:

print [my_array+[e] for e in input_elements]

暫無
暫無

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

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