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)
我知道上面的代码是错误的,所以我想知道如何生成这样的输出。
答案 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]