我有这个代码生成两个列表。一个列表来自1-30
,另一个列表来自30-1
。如何将some_list2
的每个元素除以some_list
的每个元素。它应该是这样的:1/30
,2/29
,依此类推。我正考虑将每个分区值存储在一个新列表中 - 一个分区,一个新元素。
这就是我所拥有的:
some_list = []
some_list2 = []
for i in reversed(range(1, 31)):
a = i
some_list.append(a)
for x in range(1,31):
b = x
some_list2.append(b)
我尝试将一个列表整体划分为另一个列表,然后我查看了一个单独的for循环进行划分,但是我被卡住了。顺便说一句,我这样做是为了练习。
答案 0 :(得分:2)
您可以通过zip
将列表组合在一起,解压缩元组元素并进行划分来实现此列表:
r = [i/j for i,j in zip(some_list2, some_list)]
这实际上会创建(some_list2[i], some_list[i])
个值的元组,将它们分配给i
和j
,然后执行除法。
r
现在是一个包含结果的列表:
print(r)
[0.03333333333333333,
0.06896551724137931,
0.10714285714285714,
0.14814814814814814,
0.19230769230769232,
...
4.166666666666667,
5.2,
6.75,
9.333333333333334,
14.5,
30.0]
或者,您也可以通过map
模块中的truediv
和operator
以功能性方式执行此操作:
from operator import truediv
r = list(map(truediv, some_list2, some_list))
truediv
是'/'
运算符的可调用形式,用于此类用法。 map
将从some_list2
和some_list
中获取元素并将其应用于truediv
函数;完成包裹list
调用以将地图结果扩展到列表。