从每个循环中获取信息以便在下一个循环中使用而不终止循环(Python)

时间:2014-12-08 10:04:36

标签: python

对不起,如果有人在其他地方询问,但我搜索的内容并没有显示我需要的信息,我也不太清楚其他关键字可以用来进一步搜索。请理解我对编程很陌生。

好的,现在开始营业了。我有两个for循环设置。第一个循环遍历列表并将其与通过变量输入的其他几个字符串连接起来。第二个接受第一个循环中的字符串,并将来自不同循环的数据连接到它上面。但是,当我执行该函数时,第二个循环仅使用前一个循环的最后一个结果,而不是将数据附加到从第一个循环形成的所有字符串。这是一个例子:

j=0
k=0
for j in xrange(0, 2):
        for k in xrange(0, 2):
                first=(a + sign[k] + b)
                k = k+1
        second=(first + sign[j] + c)
        print(second)
        j = j+1

其中a,b,c和sign []是变量。

我想要的输出是:

a + sign[0] + b + sign[0] + c
a + sign[1] + b + sign[0] + c
a + sign[0] + b + sign[1] + c
a + sign[1] + b + sign[1] + c

我得到的输出是:

a + sign[1] + b + sign[0] + c
a + sign[1] + b + sign[1] + c

(好吧,我将会使用更多的价值观,但这是它的一般要点)

有没有什么方法可以从第一个循环中获取数据而不停止它在第二个循环中用来制作这样的列表,即获取代码在第一个实例中使用sign [0]而不是只是签署[1]?另外,我想重申一下,我对编码很新,所以请在回复时牢记这一点!

3 个答案:

答案 0 :(得分:0)

您需要在内部循环中打印元素,这样您就可以为jk的每个不同值进行打印。

另请注意,您不需要手动增加jk - 它本身就会被处理,因为它是for-each循环的循环变量。< / p>

您还可以使用len()函数更改列表的大小(当前硬编码为2),以便更灵活:

>>> for j in xrange(0,len(sign)):
...   for k in xrange(0,len(sign)):
...     first = a + sign[k] + b
...     second = first + sign[j] + c
...     print(second)
...

输出(我设置a='a',b='b',c='c',sign=['0','1']

a0b0c
a1b0c
a0b1c
a1b1c

答案 1 :(得分:0)

使用itertools.product

for first, second in itertools.product(sign[:2], sign[:2]):
    print a + first + b + second + c

答案 2 :(得分:0)

您的代码中可能有一个错误,您实施k一次太多。 for循环确保k递增,但您还有k = k + 1,因此在每次迭代中,您将递增2:

for k in xrange(0, 2):
    first = ....
    k = k + 1              # should this be here?

这样for循环只会运行一次,其中k值为零。