有没有办法在Python(3)中为循环使用条件语句?

有没有办法在Python(3)中为循环使用条件语句?,python,python-3.x,for-loop,Python,Python 3.x,For Loop,主要使用Java编写代码,并想知道Python是否可以在其for循环(如Java和C)中使用条件和不同类型的递增。如果这是一个简单的问题,我很抱歉 i、 e: boolean标志=True 对于(int i=1;i >(例如,列表、字符串等) PYTHON FOR循环: for循环用于迭代序列(即列表、元组、字典、集合或字符串) 这不像其他编程语言中的for关键字,更像是其他面向对象编程语言中的迭代器方法 使用for循环,我们可以为列表、元组、集合等中的每个项目执行一组语句 范例 在水果列表中打

主要使用Java编写代码,并想知道Python是否可以在其for循环(如Java和C)中使用条件和不同类型的递增。如果这是一个简单的问题,我很抱歉

i、 e:

boolean标志=True
对于(int i=1;i<20&&flag;i*=2){
//在这里输入代码
}

不是直接的。
for
循环迭代预先生成的序列,而不是生成序列本身。天真的翻译可能看起来像

flag = True
i = 1
while i < 20:
    if not flag:
        break
    ...
    if some_condition:
        flag = False
    i *= 2
最后,您可以定义自己的生成器进行迭代

def powers_of_two():
    i = 1
    while True:
        yield i
        i *= 2


for i in powers_of_two():
    ...
    if some_condition:
        break
    
如果将步长作为某个常量增量(如i++、i+=10等),则可以使用
range()
。语法是-

range(start,stop,step)
范围(开始、停止、步进)
用于替换(int i=start;i。它不适用于乘法,但是如果您有类似于
i
的东西,您仍然可以使用它(使用
break

您在问题中提到的等效循环可以是=>

for(int i=0;i<20;i*=2)  // C/C++ loop

# Python - 1
i = 0
while i < 20 :    # Equivalent python loop
    # Code here
    i*=2
for(int i=0;i

/C/C++
布尔标志=真;

for(int i=0;iPython中的
for
循环与C中的循环不同。它们类似于Java 7中应用于iterables的for-each循环:

for (String name: TreeSet<String>(nameList) ) {
   //Your code here
}
for(字符串名称:TreeSet(名称列表)){
//你的代码在这里
}
如果您想要控制迭代器变量,那么使用
while
for
循环,并在循环中使用
break
可能是实现这种控制的最干净的方法


这可能是一个研究Python理解教程的好时机。尽管它们不直接适用于您的问题,但这是我最欣赏的特性,大约五年前它来自Java。

从某种意义上说,但它不像JS和Java那么简单

下面是使用带有两个条件的while循环用Python编写的示例。还要注意,在Python while循环中,不能在循环声明中分配或增加索引

boolean_flag = True

i = 1
while (i < 20 and boolean_flag):
    i *= 2
    # Code in here
boolean\u flag=True
i=1
而(i<20和布尔值_标志):
i*=2
#在这里输入代码

您使用while作为循环内的标志、条件和增量

i = 1
while flag and i < 20:
    # code here
    i = i*2
i=1
当flag和i<20时:
#代码在这里
i=i*2

当然可以,但您可能需要自己做一些事情

Python提供了一个类,该类生成具有可选步长增量的可交互值序列

范围(1、20、2)内的i的
:
#做事
#在这里,i从1开始,每循环在>=20处停止时递增2
如果要执行更复杂的操作,如
i*=2
,则有两个选项:

  • 使用while循环并自己增加值
  • 编写一个自定义生成器,如
    range()
    ,实现这样的功能
  • 示例生成器:

    def范围步骤(启动、停止、步骤):
    启动<停止时:
    产量起点
    开始*=步骤
    对于范围内的i步数(1100,2):
    印刷品(一)
    
    请注意此处使用的
    yield
    关键字。这对于大范围内的性能非常重要,特别是当iterable对象位于较大的一侧时。此处使用关键字允许Python一次只处理一个对象,而不是在开始处理之前在内存中生成所有这些内容

    您可以在for循环中使用条件,也可以使用
    break
    continue
    关键字将循环流控制到某个级别。也就是说,循环是在该块之外生成的,因此您不能在循环中间更改步骤或其他内容

    虽然循环是一个完全不同的故事,你可以改变你想要的步骤,因为你是一个增加它的第一位

    示例while循环:

    i = 1
    while i < 100
      if i % 2 == 0:
        i *= 2
      else:
        i += 1
    
    i=1
    当我<100
    如果i%2==0:
    i*=2
    其他:
    i+=1
    
    对于您的提问,上面的答案是好的和有效的,但我会给出我的想法

    max = 20
    for i in range(0, max/2):
        c = i * 2
        if flag:
            #Do work.
            break
    
    或者缩短它:

    max = 20
    for i in range(0, max, 2):
        if flag:
            #Do work.
            break
    

    在Python中,不能使用增量运算符,如C++、Java、E.X、 X++< /C>或<代码> -X/COD>。Python中的< <代码> >循环工作在java >迭代器< /C> >(例如,列表、字符串等)

    PYTHON FOR循环: for循环用于迭代序列(即
    列表、元组、字典、集合或字符串)

    这不像其他编程语言中的
    for
    关键字,更像是其他面向对象编程语言中的迭代器方法

    使用for循环,我们可以为列表、元组、集合等中的每个项目执行一组语句

    范例 在水果列表中打印每个水果:

    fruits = ["apple", "banana", "cherry"]
    for x in fruits:
      print(x)
    
    将打印:

    apple
    banana
    cherry
    
    范例 请勿打印香蕉:

    fruits = ["apple", "banana", "cherry"]
    for x in fruits:
      if x == "banana":
        continue
      print(x)
    
    PYTHON条件:

    在python中,假值的关键字是
    false
    ,真值的关键字是
    true

    类似C++或java,可以使用==/Cuff>比较值。但是与java不同,在这里有严格的类型检查,条件需要是<代码>布尔< /COD>语句,在Python中:

  • 如果有某种内容,几乎任何值都将被计算为
    True
  • 除空字符串外,任何字符串均为
    True
  • 除0外,任何数字均为
  • 任何
    列表
    元组
    集合
    、和
    字典都是
    True`,空的除外
  • 事实上,除了空值(如()、[]、{}、“”、数字0和值None)之外,计算结果为
    False
    的值不多。当然,值
    False
    计算结果为
    False

    以下内容将返回False:

    bool(False)
    bool(None)
    bool(0)
    bool("")
    bool(())
    bool([])
    bool({})
    
    在本例中,一个以上的值或对象的计算结果为
    False
    ,并且
    fruits = ["apple", "banana", "cherry"]
    for x in fruits:
      if x == "banana":
        continue
      print(x)
    
    bool(False)
    bool(None)
    bool(0)
    bool("")
    bool(())
    bool([])
    bool({})
    
    class myclass():
      def __len__(self):
        return 0
    
    myobj = myclass()
    print(bool(myobj))
    
    boolean_flag = True
    i = 1 # actually I wouldn't use i as a variable name, but whatever.
    while i < 20 and boolean_flag:
        # code goes here
        i *= 2
    
    from itertools import takewhile, count
    
    boolean_flag = True
    for i in takewhile(lambda i: i < 20, map(lambda x: 2**x, count())):
        # code goes here
        if not boolean_flag:
            break
    
    boolean_flag = something()
    something_that_has_to_happen_after_regardless_of_flag_value()
    if not boolean_flag:
        break
    
    for i in (2**x for x in range(10)):
        if not i < 20:
            break
    
    for x in range(10):
        i = 2 ** x
        if not (i < 20 and boolean_flag):
            break