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)