清单列表之间的划分

时间:2016-09-24 15:25:03

标签: python list python-3.x

我有这个代码生成两个列表。一个列表来自1-30,另一个列表来自30-1。如何将some_list2的每个元素除以some_list的每个元素。它应该是这样的:1/302/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循环进行划分,但是我被卡住了。顺便说一句,我这样做是为了练习。

1 个答案:

答案 0 :(得分:2)

您可以通过zip将列表组合在一起,解压缩元组元素并进行划分来实现此列表:

r = [i/j for i,j in zip(some_list2, some_list)]

这实际上会创建(some_list2[i], some_list[i])个值的元组,将它们分配给ij,然后执行除法。

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模块中的truedivoperator以功能性方式执行此操作:

from operator import truediv

r = list(map(truediv, some_list2, some_list))

truediv'/'运算符的可调用形式,用于此类用法。 map将从some_list2some_list中获取元素并将其应用于truediv函数;完成包裹list调用以将地图结果扩展到列表。