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

标签 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 循环如何做到这一点?

最佳答案

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/

相关文章:

python - 在Python中查找多个元素的最小值和最大值

python - Matplotlib 绘图不显示在 sublimetext 中

python - 使用 docstring 和 "Not Implemented"异常在 Eclipse 和 Pydev 中预填充新函数

python - Flask 蓝图结构

c++ - 用于 Web 应用程序核心逻辑开发的 C/C++?

python - 使用单个数据库服务器水平扩展 Django 应用程序

Python从数据帧中提取行,其中数据位于另一个数据帧的两行之间

python - 如何防止正则表达式匹配单词的子字符串?

python - 使用 Python RegEx re.findall 解析文本

python - 使用 pygtk 和 glade 将 pixbuf 绘制到绘图区域