打开包装并一步计算它们

问题描述

我正在尝试迭代Xy的同时解压缩它们,并使用enumerate()函数对数进行计数,如以下代码所示:

X = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]
Y = [[11,21,31,41],[51,61,71,81],[91,101,111,121],[131,141,151,161],[171,181,191,201]]

index = 0
for x,y in zip(X,Y):

    print(f'{index },{x},{y}')

    index += 1

我想保存index += 1行,并能够在for循环中获取所有索引x和y

我尝试过的事情:

  • 我尝试在enumerate上使用zip函数,但这需要我手动解开xy的包装,如以下代码所示,我想保存这一行:
X = [[1,201]]

for index,data in enumerate(zip(X,Y)):
    x,y = data
    print(f'{index},{y}')

所需结果:

可以在以下示意图 pseudo-code 中看到所需的结果:

#for index,x,Y):
#    print(f'{index },{y}')

在这里想念什么?

谢谢。

解决方法

您可以将enumerate返回的值直接解压缩到元组中(您的伪代码只是漏掉了括号):

for index,(x,y) in enumerate(zip(X,Y)):
    print(f'{index},{x},{y}')

->

0,[1,2,3,4],[11,21,31,41]
1,[5,6,7,8],[51,61,71,81]
...
,

您还可以在f字符串中使用data [0]和data [1]。因此,您可以使用较少的临时变量。

for index,data in enumerate(zip(X,Y)): print(f'{index},{data[0]},{data[1]}')