我有这些清单:
list1 = [3, 5, 2, 1, 9]
list2 = [6, 9, 1, 2, 4]
list3 = []
list4 = []
我想传递这些公式:
x = a/b
y = 1/b
其中a是list1中的每个值,b是list2中的每个值,并将计算结果附加到两个空列表中 - list3和list4。
这就是我所拥有的,但它是一场灾难哈哈:(
u = 0
while u<len(list1):
for a in list1:
for b in list2:
x = a/b
y = 1/b
u+=1
list3.append(x,)
list4.append(y,)
任何人都可以帮我这个吗?
答案 0 :(得分:5)
这是一个oneliner:
>>> 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)
输出为tuples
。但它们可以很容易地转换为list
。
喔。使用generator expression
代替list comprehension
:
>>> zip(*((a/b,1/b) for a,b in zip(list1,list2)))
答案 1 :(得分:4)
for a, b in zip(list1, list2):
x = a/b
y = 1/b
list3.append(x)
list4.append(y)
这假设您的意思是想要成对使用列表。如果你意味着你想要列出所有可能的配对,那么:
for a in list1:
for b in list2:
x = a/b
y = 1/b
list3.append(x)
list4.append(y)
答案 2 :(得分:4)
for a,b in zip(list1,list2):
x = a/b
y = 1/b
??像这样的东西
答案 3 :(得分:4)
只需在Python中使用zip函数:
for a, b in zip(list1, list2):
list3.append(a/b)
list4.append(1/b)
答案 4 :(得分:0)
list3 = map((lambda x, y: x/y), list1, list2)
list4 = map(lambda x: 1/x), list2)
OR:
list3, list4 = zip(*map((lambda x, y: (x/y, 1/y)), list1, list2)