关于python中value数量的问题

主要就是想知道为什么使用(a,)就可以将values变成2个
代码1会报错ValueError: not enough values to unpack (expected 2, got 1),而代码2可以得到2个values,运行结果m !=n

a = ['m','n']
for x,y in a: #代码1
print(x,'!=',y)

for x,y in (a,): #代码2
print(x,'!=',y)

  首先我们来看看您的两个轮询的对象a、(a,),a是列表包含m、n两个字符元素;而(a,)则是包含一个元素的元组,她的实质是(['m','n'],),一个元素就是列表a。
  您用x,y轮询a,每次得到一个字符(m、n),无法分配给两个变量(x, y),必然报错。

a = ['m', 'n']

for x,y in a: #代码1
     print(x, '!=', y)

img

  而轮询(a,),得到的是['m', 'n'],她有两个字符元素,可以分配给x,y,正常执行print(x, '!=', y)。

for x,y in(a,):
    print(x, '!=', y)

输出

m != n

img