Python 3.x 将for循环分离为一个交替循环
我正在编写一些python代码,当我意识到我无法找到一个简洁高效的代码解决方案时,我需要更改代码的逻辑 因此,我的第一个版本如下: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
#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元素。实际的射程数在哪里起作用?