Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表之间的列表划分_Python_List_Python 3.x - Fatal编程技术网

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
时),您也在执行冗余工作。我喜欢它!谢谢你详细的回答,我喜欢!谢谢你的详细回答。