Python 列表之间的列表划分
我有一个生成两个列表的代码。一个列表来自Python 列表之间的列表划分,python,list,python-3.x,Python,List,Python 3.x,我有一个生成两个列表的代码。一个列表来自1-30,另一个来自30-1。如何将some_list 2的每个元素除以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
1-30
,另一个来自30-1
。如何将some_list 2
的每个元素除以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循环来进行划分,但我被卡住了。顺便说一下,我这样做是为了练习 您可以通过列表理解来实现这一点,方法是
zip
将列表打包在一起,解压缩元组元素并划分:
r = [i/j for i,j in zip(some_list2, some_list)]
这实质上是创建(一些列表2[i],一些列表[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
以功能性方式执行此操作:
from operator import truediv
r = list(map(truediv, some_list2, some_list))
truediv
是'/'
运算符的一种可调用形式,是为此类用法定义的map
将从some_list 2
和some_list
中获取元素,并将它们应用于truediv
函数;在list
调用中进行换行,以将映射结果展开为列表 您可以通过列表理解来实现这一点,方法是zip
将列表打包在一起,解压缩元组元素并划分:
r = [i/j for i,j in zip(some_list2, some_list)]
这实质上是创建(一些列表2[i],一些列表[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
以功能性方式执行此操作:
from operator import truediv
r = list(map(truediv, some_list2, some_list))
truediv
是'/'
运算符的一种可调用形式,是为此类用法定义的map
将从some_list 2
和some_list
中获取元素,并将它们应用于truediv
函数;在list
调用中进行换行,以将映射结果展开为列表 为了便于记录,您编写的代码可以简化为some_list=list(范围(1,31))
,some_list 2=some_list[:-1]
。即使必须通过迭代和append
ing(在append
ing之前分配给a
是愚蠢的,因为你可以直接append
i
),你也在执行冗余工作。根据记录,你写的代码可以简化为some\u list=list(范围(1,31))
,some_list 2=some_list[::-1]
。即使您必须通过迭代和append
ing(在append
ing之前分配给a
是愚蠢的,当您可以直接append
i
时),您也在执行冗余工作。我喜欢它!谢谢你详细的回答,我喜欢!谢谢你的详细回答。