对于具有多个迭代值的循环

时间:2016-05-02 23:38:13

标签: python for-loop

我试图理解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))

3 个答案:

答案 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 (意味着它会做您未曾要求的事情)