Python 在两个列表中循环

Python 在两个列表中循环,python,Python,我有以下清单: list1 = [3, 5, 2, 1, 9] list2 = [6, 9, 1, 2, 4] list3 = [] list4 = [] 我想通过这些公式: x = a/b y = 1/b 其中a是列表1中的每个值,b是列表2中的每个值,并将计算结果附加到两个空列表中-列表3和列表4 这就是我所拥有的,但这是一场灾难哈哈:( u=0 当你 这是假设您的意思是希望成对使用列表。如果您的意思是希望所有可能的列表配对,则: for a in list1: for b in

我有以下清单:

list1 = [3, 5, 2, 1, 9]
list2 = [6, 9, 1, 2, 4]
list3 = []
list4 = []
我想通过这些公式:

x = a/b
y = 1/b
其中a是列表1中的每个值,b是列表2中的每个值,并将计算结果附加到两个空列表中-列表3和列表4

这就是我所拥有的,但这是一场灾难哈哈:(

u=0
当你
这是假设您的意思是希望成对使用列表。如果您的意思是希望所有可能的列表配对,则:

for a in list1:
    for b in list2:
        x = a/b
        y = 1/b
        list3.append(x)
        list4.append(y)

?类似这样的东西,只需在Python中使用zip函数即可:

for a, b in zip(list1, list2):
    list3.append(a/b)
    list4.append(1/b)
这里有一条单行线:

>>> list3,list4 = zip(*[(a/b,1/b) for a,b in zip(list1,list2)])
>>> list3
(0, 0, 2, 0, 2)
>>> list4
(0, 0, 1, 0, 0)
输出是
元组
。但是它们可以很容易地转换为
列表

哦,如果使用
生成器表达式
而不是
列表理解
,可能会提高内存效率:

>>> zip(*((a/b,1/b) for a,b in zip(list1,list2)))
或:


您想并行地遍历列表还是遍历元素的每个组合?好的,那么下面的任何答案都是正确的:)您的答案与@NedBatchelder@Tadeck:当一个问题可以在几秒钟内得到回答时,总是会发生这种情况。因为答案是正确的,所以不需要否决投票。在几秒钟的时间间隔内,我想当问题几乎没有解决方案时,应该会有相同的解决方案。好把戏。考虑到附加成本太高,最好避免附加。@Abhijit你是对的。列表追加不是很有效(因为经常需要内存分配)。谢谢!我正在使用这段代码,我已经将元组转换为列表。谢谢所有回答的人!冰蓝,你想增加你的代码只回答一些解释吗?这将有助于消除StackOverflow是免费代码编写服务的误解。这也会让你有机会指出你的答案是如何比其他的投票结果更好的。我建议你去吃早餐,祝你好运。
for a, b in zip(list1, list2):
    list3.append(a/b)
    list4.append(1/b)
>>> list3,list4 = zip(*[(a/b,1/b) for a,b in zip(list1,list2)])
>>> list3
(0, 0, 2, 0, 2)
>>> list4
(0, 0, 1, 0, 0)
>>> zip(*((a/b,1/b) for a,b in zip(list1,list2)))
list3 = map((lambda x, y: x/y), list1, list2)
list4 = map(lambda x: 1/x), list2)
list3, list4 = zip(*map((lambda x, y: (x/y, 1/y)), list1, list2)