如何在Python for循环中使用多个条件?

2024-10-02 00:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Python for循环中使用多个条件?

for example in java:
    int[] n={1,2,3,4,6,7};
    for(int i=0;i<n.length && i<5 ;i++){
      //do sth
    }

python for loop是如何做到这一点的?


Tags: inloopforexamplejava条件dolength
3条回答

Pythonfor循环本身对此没有任何支持。使用break语句可以获得相同的效果:

for i in range(1, 8):
    if i >= 5:
        break
    # do something

在Python中,for实际上是在某个“迭代器”或某个“iterable对象”上迭代的foreach。在Python2.x中,上面的for循环构建一个包含数字1到7的列表,然后遍历该列表;在Python3.x中,上面的循环获取一个“迭代器对象”,该对象每次生成一个包含值1到7的值。(区别在于range()函数及其返回的内容。在Python 2.x中,可以使用xrange()来获取迭代器对象,而不是分配列表。)

我没有显示您的n对象,因为i将被设置为与其中的值相同的值。如果您确实需要遍历某个列表,那么Python最好直接遍历它,而不是使用变量i来索引该列表。如果您仍然需要一个索引变量,可以使用enumerate()获得它,如下所示:

n = [3, 5, 10, "cat", "dog", 3.0, 4.0]  # list can contain different types
for i, value in enumerate(n):
    if i >= 5:
        break
    # do something with value

这里有一种方法可以用for循环有两个或多个条件,这就是问题实际上要问的问题。我试图说明的一点是,这是可以做到的,但不是很Python,这通常不是一个好主意,试图重写代码从另一种语言逐行。

from itertools import takewhile, count
n=[1,2,3,4,6,7]
for i in takewhile(lambda i:i<len(n) and i<5, count()):
     print(i)

Java代码的直接等价物是一个while循环:

n = [1, 2, 3, 4, 6, 7]
i = 0
while i < len(n) and i < 5:
    # do sth
    i += 1

你也可以:

n = [1, 2, 3, 4, 6, 7]
for x in n[:5]:
    # do sth

相关问题 更多 >

    热门问题