Python 如何使用for循环打印两个不同列表中的两个变量?
我试图从两个不同的列表中打印两个具有相同值的for循环的变量,但当列表中有两个以上的值时,我会出现以下错误:Python 如何使用for循环打印两个不同列表中的两个变量?,python,python-3.x,list,for-loop,Python,Python 3.x,List,For Loop,我试图从两个不同的列表中打印两个具有相同值的for循环的变量,但当列表中有两个以上的值时,我会出现以下错误: ValueError: too many values to unpack (expected 2) 假设姓名和姓氏列表的长度相同(例如,name=['m'、'y'、'.'、'.'.'.]和姓氏=['n'、'a'、'm'、'e']) 我的预期结果是“我的…”和“姓名”垂直打印在一起。使用: 结果: m n y a . m . e 您的for循环正在一个长度为2的序列上迭代:name
ValueError: too many values to unpack (expected 2)
假设姓名和姓氏列表的长度相同(例如,name=['m'、'y'、'.'、'.'.'.]
和姓氏=['n'、'a'、'm'、'e']
)
我的预期结果是“我的…”和“姓名”垂直打印在一起。使用:
结果:
m n
y a
. m
. e
您的
for
循环正在一个长度为2的序列上迭代:name
后跟姓氏
。这两项中的每一项都被解包成x
和y
,这两项都失败了,因为它们各自包含四个元素。要并行迭代这两个序列,请使用zip(姓名)
。一切都很详细,你能解释一下为什么会这样吗?或者为什么我这样做的原因是:zip()
(在答案中链接)的文档详细解释了它是如何工作的,但在任何情况下,玩它都应该让它变得显而易见。
name = ['m', 'y', '.', '.']
surname = ['n', 'a', 'm', 'e']
for x, y in zip(name, surname):
print(x, y)
m n
y a
. m
. e