拆开物品,一步算一数

Unpack items and count them with one step

我正在尝试迭代 Xs 和 ys 同时解压它们并使用 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

我尝试过的:

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]]

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

期望的结果:

期望的结果可以在下面的示意图中看到伪代码:

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

我在这里错过了什么?

提前致谢。

您可以将 enumerate 返回的值直接解包到元组中(您的 pseudo-code 只是漏掉了括号):

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-string中使用数据[0]和数据[1]。因此,您可以使用较少的临时变量。

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