在一行上打印2个列表

时间:2019-10-14 05:14:24

标签: python-3.x

我试图在一行中打印每个列表中的每一个第一位数字,我浪费了大约1个小时来尝试,但没有解决方法

Xx = [1298, 1390, 1487, 1573, 1669, 1766, 1766, 1672, 1573, 1485, 1392, 1297, 1303, 1388, 1487, 1577, 1664, 1757, 1763, 1671,
      1577, 1487, 1393, 1298, 1301, 1376, 1449, 1535, 1604, 1682, 1760, 1769, 1676, 1568, 1485, 1398, 1300]

Yx = [331, 328, 328, 326, 329, 329, 422, 422, 416, 422, 419, 421, 514, 518, 516, 518, 518, 517, 605, 606, 605,
      603, 602, 605, 730, 737, 736, 738, 740, 740, 742, 858, 869, 860, 857, 863, 864]

for posX, posY in (Xx, Yx):
    print(posX, posY)

错误:    对于posX,(Xx,Yx)中的posY: ValueError:太多值无法解包(预期2)

2 个答案:

答案 0 :(得分:1)

如果您打算在一行中的每个列表中一起打印具有相同索引的数字,依此类推(按照您尝试的代码进行打印),则需要使用zip:

for x, y in zip(Xx, Yx):
    print(x, y)

如果您打算仅打印每个列表的第一项(您提到了类似的内容)

print(Xx[0], Yx[0])

答案 1 :(得分:0)

要同时在多个列表中进行迭代,您需要zip()zip给出一个tuple,其中包含作为参数提供给它的所有列表的迭代器。

示例:1

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l3 = [7, 8, 9]

for l, m, n in zip(l1, l2, l3):
    print(l, m, n)

输出:

  

1 4 7
  2 5 8
  3 6 9


示例:2

l1 = [1, 2, 3]
l2 = [4, 5, 6]
l3 = [7, 8, 9, 10]
l4 = [11, 12]

for l, m, n, o in zip(l1, l2, l3, l4):
    print(l, m, n, o)

输出:

  

1 4 7 11
  2 5 8 12

注意:在示例2中,列表l3l4的元素数不相等。因此,zip迭代仅进行到所有参数li的元素数量最少为止