Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将for循环分离为一个交替循环_Python 3.x - Fatal编程技术网

Python 3.x 将for循环分离为一个交替循环

Python 3.x 将for循环分离为一个交替循环,python-3.x,Python 3.x,我正在编写一些python代码,当我意识到我无法找到一个简洁高效的代码解决方案时,我需要更改代码的逻辑 因此,我的第一个版本如下: #set ranges range_a=150 range_b=178 range_c=20 #add elements for x in range(0, range_a): ...do something... add_element_a() for y in range(0, range_b): ...do some

我正在编写一些python代码,当我意识到我无法找到一个简洁高效的代码解决方案时,我需要更改代码的逻辑

因此,我的第一个版本如下:

#set ranges
range_a=150  
range_b=178  
range_c=20  

#add elements  
for x in range(0, range_a):
    ...do something...
    add_element_a()

for y in range(0, range_b):
    ...do something...
    add_element_b()

for z in range(0, range_c):
    ...do something...
    add_element_c()
正如您所看到的,我是按类型添加元素的,首先是类型a,然后是类型b,最后是类型c。现在我想创建一个while循环或其他东西来交替添加它们

例如,我们先从类型a中添加一个,然后从类型b中添加一个,等等,直到达到某个类型的范围为止,然后继续添加其余类型

我知道这可能被视为一个基本问题,但我正在寻找一个有效的解决方案

更新: 这是第二个版本,我觉得太复杂了,我想知道是否有更有效的方法:

filled_a=False
filled_b=False
filled_c=False

while(!(filled_a & filled_b & filled_c) == True)):
 if (counter_a < range_a):
     add_element_a()
     counter_a++
     if(counter_a==range_a): filled_a=True
 if (counter_b < range_b):
     add_element_b()
     counter_b++
     if(counter_b==range_b): filled_b=True
 if (counter_c < range_c):
     add_element_a()
     counter_c++
     if(counter_c==range_c): filled_c=True
filled\u a=False
填充b=假
填充c=错误
而(!(filled_a&filled_b&filled_c)=True):
如果(计数器a<范围a):
添加元素
柜台a++
如果(计数器a==范围a):填充的a=真
如果(计数器b<范围b):
添加元素
柜台++
if(counter_b==range_b):filled_b=True
如果(计数器c<范围c):
添加元素
柜台++
如果(计数器c==范围c):填充的c=True

您可以尝试以下解决方案:

class RangeCounter:
    def __init__(self, range_type):
        self.range_type = range_type

    def add_element(self):
        # implement your addition logic here
        pass

range_a= RangeCounter(150)  
range_b= RangeCounter(178)  
range_c= RangeCounter(20)
range_list = [range_a, range_b, range_c]

for range_type in range_list:
    range_type.add_element()

根据最大范围进行迭代,并检查哪个范围尚未用尽:

#设置范围
范围a=150
范围b=178
范围c=20
#添加元素
对于范围内的i(最大值(范围a、范围b、范围c)):
如果i
nice one:)谢谢这将为每个范围调用一次
add\u元素。实际的射程数在哪里起作用?