我怀疑我缺少一些超级基本的东西,只是看错了这个问题所以如果有人能指出我正确的方向,我会很高兴.这是我的问题:
我有一个变量列表,为简单起见,它们总是包含值.我想让我的代码通过所有可能的选项.这是我很快想到的方式:
num_apples = 100
num_pears = 100
for current_apple in range(0,num_apples+1):
for current_pear in range(0, num_pears+1):
print current_apple, " - ", current_pear
Run Code Online (Sandbox Code Playgroud)
关于这段代码的好处是我可以轻松地摆脱循环(即说我不希望current_apple + current_pear> 50或者其他东西),但主要的缺点是我需要具体知道有多少变量(在这种情况下是水果)我开始时常常不知道.
有没有办法动态创建上面的for循环类型结构,所以我可以控制何时打破一个子循环,但不知道具体提前我有多少变量?
编辑:理想情况下,我认为这对我来说会更容易,如果我可以一次增加一个变量的大小,那么一旦变量超出对我有用的范围,我就可以突破循环.
我想做n次嵌套循环,这个n是一个变量,可以通过函数或输入方法提供.为了做到这一点,我必须写很多if..elif块取决于n的大小,有没有人有好的策略来处理这个任务?我使用的代码(用于组合4个字母的问题)如下:
def charCombination(n):
patList = []
s = 'ATCG'
if n == 1:
for i in s:
patList.append(i)
elif n == 2:
for i in s:
for j in s:
patList.append(i+j)
elif n == 3:
for i in s:
for j in s:
for k in s:
patList.append(i+j+k)
...
return patList
Run Code Online (Sandbox Code Playgroud) 我试图找出一种方法来动态重现下面的循环结构,具体取决于我拥有的“组”的数量。有任何想法吗?提前致谢!
for a in range(len(group1)):
for b in range(len(group2)):
for c in range(len(group3)):
for d in range(len(group4)):
for e in range(len(group5)):
for f in range(len(group6)):
createImage(a,b,c,d,e,f,counter)
Run Code Online (Sandbox Code Playgroud) 这是我的实施:
def walk_two(a, b):
for x in a:
for y in b:
yield x, y
a = xrange(2)
b = xrange(3)
for x, y in walk_two(a, b):
print x, y
Run Code Online (Sandbox Code Playgroud)
有了这个输出:
0 0
0 1
0 2
1 0
1 1
1 2
Run Code Online (Sandbox Code Playgroud)
有更好的(更加pythonic)方式吗?一个内置的?更通用的walkN?