例如:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
通缉结果:
NewList = [4, 5, 6, 8, 10, 12, 12, 15, 18]
答案 0 :(得分:3)
三种可能的方法:
<强>可读强>
new_list = []
for a in list1:
for b in list2:
new_list.append(a * b)
这清楚地表明发生了什么,但需要四行并重复调用new_list.append()
,效率稍低。
<强>简明强>
new_list = [a * b for a in list1 for b in list2]
这非常紧凑,但对于很多人来说,需要花一两个时间来记住多个for
list comprehensions的嵌套是从左到右还是从右到左。< / p>
<强>懒惰强>
from itertools import product
new_list = [a * b for a, b in product(list1, list2)]
即使list1
和list2
为generators或其他一次性,懒惰评估的迭代,这也可正常工作,例如
>>> from itertools import count, islice
>>> list1 = islice(count(1), 3)
>>> list2 = islice(count(4), 3)
>>> [a * b for a, b in product(list1, list2)]
[4, 5, 6, 8, 10, 12, 12, 15, 18]
......这对前两种方法无效。
请注意,我在这些示例中使用了new_list
而不是NewList
,这是在Python中命名变量的传统方法。
答案 1 :(得分:0)
您可以通过打印NewList
来检查结果,在这种情况下可以为您提供上面的内容。您的list1
和list2
已在此代码上方初始化,就像您上面一样。
NewList = []
for item1 in list1:
for item2 in list2:
NewList.append(item1*item2)