如何在 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 循环如何做到这一点?
最佳答案
Python for
循环本身对此没有任何支持。您可以使用 break
语句获得相同的效果:
n = [1, 2, 3, 4, 6, 7]
for i in n:
if i >= 5:
break
# do something with i
在 Python 中,for
实际上是一个 foreach
,它迭代某个“迭代器”或某个“可迭代对象”。当您只想重复特定次数时,这甚至是正确的:
for i in range(1, 8):
# do something with i
在 Python 2.x 中,上面的 for
循环构建一个包含数字 1 到 7 的列表,然后遍历该列表;在 Python 3.x 中,上面的循环得到一个“迭代器对象”,它产生从 1 到 7 的值,一次一个。 (区别在于 range()
函数及其返回的内容。在 Python 2.x 中,您可以使用 xrange()
获取迭代器对象,而不是分配列表.)
如果您已经有一个要迭代的列表,Python 最好直接迭代它而不是使用变量 i
来索引列表。如果您仍然需要一个索引变量,您可以像这样使用 enumerate()
获取它:
n = [3, 5, 10, "cat", "dog", 3.0, 4.0] # list can contain different types
for i, value in enumerate(n):
# we only want to process the first 5 values in this list
if i >= 5:
break
# do something with value
编辑:解决上述问题的另一种方法是使用列表切片。
for value in n[:5]:
# do something with value
这适用于 n
是一个列表。 for
循环会将 value
设置为列表中的连续项目,当列表用完或已处理 5 个项目时停止,以先到者为准。请求比实际列表长度更长的切片不是错误。
如果您想使用上述技术但仍允许您的代码使用迭代器,您可以使用 itertools.islice()
:
from itertools import islice
for value in islice(n, 5):
# do something with value
这将适用于列表、迭代器、生成器以及任何类型的可迭代对象。
并且,与列表切片一样,for
循环将获得最多 5 个值,并且请求 islice()
比值的数量长并不是错误可迭代实际上有。
关于python - 如何在 Python for 循环中使用多个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6839542/