count = 0
s = ''
lst1 = ['1','2','3']
lst2 = ['a','b','c']
z = zip(lst1, lst2)
for a, b in z:
s += a + b
if count < len(list(z)):
s += '\n'
count += 1
print(s)
建议将问题用代码片缩一下,不然不知道你在哪里缩进了。如果你的程序是这样的:
count = 0
s = ''
lst1 = ['1','2','3']
lst2 = ['a','b','c']
z = zip(lst1, lst2)
for a, b in z:
s += a + b
if count < len(list(z)):
s += '\n'
count += 1
print(s)
最后的输出应该是:1a2b3c 。
zip对象转为list,结果是[],所以len(ist(z))为0,没有执行if语句内的内容。if语句判断成功也只能执行一次,应改为while更合理。下面是我改写的代码,你看下是不是你想要的结果。
count = 0
s = ""
lst1 = ['1','2','3']
lst2 = ['a','b','c']
z = dict(zip(lst1, lst2))
for key, value in z.items():
s += key + value
while count < len(list(z)):
s += '\n'
count += 1
print(s)
因为这段代码在运行中出错,导致迭代终止。list(z)导致出错
你想表达的代码应该是这样的吧?
count = 0
s = ''
lst1 = ['1','2','3']
lst2 = ['a','b','c']
z = zip(lst1, lst2)
for a, b in z:
s += a + b
if count < len(list(z)):
s += '\n'
count += 1
print(s)
原因:对象z是一个迭代器,当python解释器执行到len(list(z))的时候,已经将z内的数据全部遍历一次,这个时候,z已经空了,下一次for循环,对象z空了,len(list(z))为0,且对象z读不出来任何数据。
PS:对于同一个迭代器(栗子:你代码中的z),只能遍历一次,然后迭代器就空了,取不出来任何东西了。
有哪个地方不懂的可以加我QQ:526772254
望采纳