尝试使用两个范围不同的变量来理解Python列表

阿克

我正在尝试使用大小为n和n / 2的两个不同数组中的内容快速生成列表。举个例子:

A = [70, 60, 50, 40, 30, 20, 10, 0]
B = [1, 2, 3, 4]

我希望产生类似

[(A[x], B[y]) for x in range(len(A)) for y in range(len(B))]

我知道第二个for语句是在“ x”之后的嵌套for循环。我正在尝试获取新数组的内容

A[0], B[0]
A[1], B[1]
A[2], B[2]
A[3], B[3]
A[4], B[0]
A[5], B[1]
A[6], B[2]
A[7], B[3]

有人能指出我正确的方向吗?

马丁·彼得斯(Martijn Pieters)

不要使用嵌套循环;你配对起来A,并BB根据需要重复。您需要的是zip()(进行配对)和itertools.cycle()(重复B):

from itertools import cycle

zip(A, cycle(B))

如果B始终是的一半A,那么您还可以加倍B

zip(A, B + B)

演示:

>>> from itertools import cycle
>>> A = [70, 60, 50, 40, 30, 20, 10, 0]
>>> B = [1, 2, 3, 4]
>>> zip(A, cycle(B))
[(70, 1), (60, 2), (50, 3), (40, 4), (30, 1), (20, 2), (10, 3), (0, 4)]
>>> zip(A, B + B)
[(70, 1), (60, 2), (50, 3), (40, 4), (30, 1), (20, 2), (10, 3), (0, 4)]

对于不知道哪个是较长列表的情况,您可以使用min()max()选择要循环的一个:

zip(max((A, B), key=len), cycle(min((A, B), key=len))

或将任意数量的列表配对,将它们全部循环,但用于itertools.islice()将内容限制为最大长度:

inputs = (A, B)  # potentially more
max_length = max(len(elem) for elem in inputs)
zip(*(islice(cycle(elem), max_length) for elem in inputs))

演示:

>>> from itertools import islice
>>> inputs = (A, B)  # potentially more
>>> max_length = max(len(elem) for elem in inputs)
>>> zip(*(islice(cycle(elem), max_length) for elem in inputs))
[(70, 1), (60, 2), (50, 3), (40, 4), (30, 1), (20, 2), (10, 3), (0, 4)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列表理解比较两个不同的列表

来自分类Dev

使用列表理解和两个不同的代码段写入文件

来自分类Dev

具有相同变量但范围不同的两个循环

来自分类Dev

使用两个不同的数据帧来计算新变量

来自分类Dev

Excel VBA 从要在列表中使用的两个不同范围创建名称(数据验证)

来自分类Dev

python dict有两个范围的理解

来自分类Dev

使用列表理解替换列表中的两个值?

来自分类Dev

通过遍历两个列表来制作字典列表(列表理解)

来自分类Dev

使用来自两个不同大小数据集(和逻辑关系)的变量来创建新变量

来自分类Dev

使用Python中的一行列表理解从一个列表中获得两个列表

来自分类Dev

来自两个列表或zip的python理解

来自分类Dev

对两个列表的列表理解

来自分类Dev

尝试让php准备使用两个不同的表

来自分类Dev

Python 列表理解,在两个 for 循环中使用 if 语句

来自分类Dev

尝试在python django中使用不同的键映射两个对应的值

来自分类Dev

python irc bot尝试使用两个不同的消息传递系统

来自分类Dev

连接两个不同大小的Python列表列表

来自分类Dev

如何从两个不同的神经网络中获取两个变量列表

来自分类Dev

如何使用两个$来创建新变量

来自分类Dev

SQL在哪里使用两个变量排除范围

来自分类Dev

让if / else在列表理解中突破一个循环,循环遍历两个范围

来自分类Dev

尝试从两个列表创建列表

来自分类Dev

如何使用两个不同的变量迭代命令?

来自分类Dev

两个不同的 POST 请求使用相同的变量

来自分类Dev

列表理解有两个条件

来自分类Dev

如何在python中使用列表理解将两个元素添加到列表中

来自分类Dev

合并python中两个不同列表中的DF

来自分类Dev

使用两个不同的读取行命令在python 2.7中从CSV文件创建列表

来自分类Dev

使用LINQ从两个列表中选择不同的元素?

Related 相关文章

  1. 1

    列表理解比较两个不同的列表

  2. 2

    使用列表理解和两个不同的代码段写入文件

  3. 3

    具有相同变量但范围不同的两个循环

  4. 4

    使用两个不同的数据帧来计算新变量

  5. 5

    Excel VBA 从要在列表中使用的两个不同范围创建名称(数据验证)

  6. 6

    python dict有两个范围的理解

  7. 7

    使用列表理解替换列表中的两个值?

  8. 8

    通过遍历两个列表来制作字典列表(列表理解)

  9. 9

    使用来自两个不同大小数据集(和逻辑关系)的变量来创建新变量

  10. 10

    使用Python中的一行列表理解从一个列表中获得两个列表

  11. 11

    来自两个列表或zip的python理解

  12. 12

    对两个列表的列表理解

  13. 13

    尝试让php准备使用两个不同的表

  14. 14

    Python 列表理解,在两个 for 循环中使用 if 语句

  15. 15

    尝试在python django中使用不同的键映射两个对应的值

  16. 16

    python irc bot尝试使用两个不同的消息传递系统

  17. 17

    连接两个不同大小的Python列表列表

  18. 18

    如何从两个不同的神经网络中获取两个变量列表

  19. 19

    如何使用两个$来创建新变量

  20. 20

    SQL在哪里使用两个变量排除范围

  21. 21

    让if / else在列表理解中突破一个循环,循环遍历两个范围

  22. 22

    尝试从两个列表创建列表

  23. 23

    如何使用两个不同的变量迭代命令?

  24. 24

    两个不同的 POST 请求使用相同的变量

  25. 25

    列表理解有两个条件

  26. 26

    如何在python中使用列表理解将两个元素添加到列表中

  27. 27

    合并python中两个不同列表中的DF

  28. 28

    使用两个不同的读取行命令在python 2.7中从CSV文件创建列表

  29. 29

    使用LINQ从两个列表中选择不同的元素?

热门标签

归档