如何将这些元素附加到python中的数组?

时间:2016-10-05 21:29:01

标签: python list

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)

我知道上面的代码是错误的,所以我想知道如何生成这样的输出。

3 个答案:

答案 0 :(得分:5)

您可以使用list comprehension来解决问题。

>>> 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']]

有关这些内容的详细信息,请参阅What does "list comprehension" mean? How does it work and how can I use it?

答案 1 :(得分:1)

您需要在循环中复制旧列表:

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)

答案 2 :(得分:1)

我假设你得到的输出是:

['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]