Python 相当于 Java 的标准 for 循环是啥?

Posted

技术标签:

【中文标题】Python 相当于 Java 的标准 for 循环是啥?【英文标题】:What is Python's equivalent of Java's standard for-loop?Python 相当于 Java 的标准 for 循环是什么? 【发布时间】:2013-06-29 04:58:38 【问题描述】:

我正在编写一个简单的算法来检查整数的素数,但我在将这段 Java 代码翻译成 Python 时遇到了问题:

for (int i = 3; i < Math.sqrt(n); i += 2) 
    if (n % i == 0)
        return false;

所以,我一直在尝试使用它,但显然我跳过了除以 3:

i = 3
while (i < int(math.sqrt(n))):
    i += 2  # where do I put this?
    if (n % i == 0):
        return False

【问题讨论】:

for (a; b; c) _ -> a; while(b) _; c; - 除非范围界定问题并且必须处理 continue。 for-each 构造的最后一个组件在循环体的每次评估之后进行评估。 您可能想看看blog.startifact.com/posts/older/what-is-pythonic.html 以将java(或其他语言)翻译成python - 不要忘记成为pythonic! 【参考方案1】:

Python 中唯一的 for-loop 在技术上是“for-each”,因此您可以使用类似

for i in xrange(3, int(math.sqrt(n)), 2):  # use 'range' in Python 3
    if n % i == 0:
        return False

当然,Python 可以做得更好:

all(n % i for i in xrange(3, int(math.sqrt(n)), 2))

也将是等效的(假设在该 Java 循环的末尾有一个 return true)。事实上,后者将被视为接近它的 Pythonic 方式。


参考:

for Statements xrange all

【讨论】:

Python 有 while 循环......或者我误解了你的部分答案? @mipadi 我认为他的意思是 Python 没有类似 C 的 for 循环来合并初始化程序、停止条件和步骤语句。即:Python 中唯一的forforeach 确实,我澄清了那个说法。【参考方案2】:

直接翻译是:

for i in range(3, int(math.sqrt(n)), 2):
    if n % i == 0:
        return False

【讨论】:

【参考方案3】:

在 Java for 循环中,步骤(您的示例中的 i += 2 部分)发生在循环结束时,就在它重复之前。转换为一段时间,您的 for 循环将相当于:

int i = 3;
while (i < Math.sqrt(n)) 
    if (n % i == 0) 
        return false;
    
    i += 2;

在 Python 中是类似的:

i = 3
while i < math.sqrt(n):
    if n % i == 0:
        return False
    i += 2

但是,您可以使用 Python 的 xrange 函数使其更“Pythonic”并且更易于阅读,该函数允许您指定 step 参数:

for i in xrange(3, math.sqrt(n), 2):
    if n % i == 0:
        return False

【讨论】:

【参考方案4】:

使用基本的 Python for i in range 循环:

for i in range(3, math.round(math.sqrt(x)), 2):
    if (n % i == 0):
        return false

【讨论】:

以上是关于Python 相当于 Java 的标准 for 循环是啥?的主要内容,如果未能解决你的问题,请参考以下文章

for循环子命令中的bash变量扩展[重复]

带有游标参数 (LOOP FETCH) 和 For 循环子查询的 PL/SQL 查询出错

静态链表循环链表双向链表(C代码实现)

简析Java中for循环

使用 for 循环(python)更改列表中的值

python学习笔记