我试图理解Python FOR LOOP中的多个值是如何工作的。我试图创建自己的测试,但它不起作用。为什么? 谢谢!
我的测试:
myList = [4, 5, 7, 23, 45, 65, 3445, 234, 34]
for i, b in myList:
print ("first= %d, second= %d" % (i, b))
答案 0 :(得分:5)
尝试
myList = [(4, 5), (7, 23), (45, 65), (3445, 234)]
一般概念称为元组解包。一个更简单的例子:
a, b = (1, 2)
即。不需要for循环。
答案 1 :(得分:4)
如果要通过成对的连续元素遍历列表,则可以使用切片:
>>> myList = [4, 5, 7, 23, 45, 65, 3445, 234]
>>> for x,y in (myList[i:i+2] for i in range(0,len(myList),2)):
print(x,y)
4 5
7 23
45 65
3445 234
你也可以通过给定大小的子串来迭代字符串(因为切片操作符也适用于字符串)。例如,当您想要遍历代表DNA或RNA的字符串的密码子时,您可以在生物信息学中执行此操作。
答案 2 :(得分:1)
你定义了一个带有两个迭代器的循环。
Python将迭代myList
的元素并将此值赋给i
然后将选择第一个元素并检查它是否可以迭代(例如元组或其他列表)并将分配{ {1}}这个可迭代的元素。
在这种情况下,让我们说b
然后你可以这样做:
mylist= [(1,1), (2,2)]
你会得到
for i, j in l:
print i, j
1 1
为什么呢?因为,第二个是迭代器,它将遍历内部元素并将它们吐出到打印函数。 (所以它会做另一个"隐藏" for循环)
如果你想从不同的列表中获取多个变量(需要长度相同),你可以(例如)
2 2
因此,对您的问题的一般答案是list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
for i, j in zip(list1, list2);
print i, j
(意味着它会做您未曾要求的事情)