用于增量内循环的python

时间:2012-11-16 04:25:19

标签: python python-2.7

如何从内循环增加外迭代器?

更确切地说:

  for i in range(0,6):
    print i
    for j in range(0,5):
      i = i+2

我正在

0
1
2
3
4
5

,但我想要0,2,4

以上是我想要实现的简单想法。

这是我的Java代码:

str1="ababa"
str2="aba"
for(int i =0; i < str1.length; i++)
  for(int j =0; j < str2.length; j++)
       if str1[i+j]!=str[j]
           break;
       if( j ==str2.length -1)
           i=i+str2.length;

5 个答案:

答案 0 :(得分:15)

好像你想使用范围功能的步骤参数。来自文档:

  

范围(开始,停止[,步骤])这是一个多功能的创建功能   包含算术进度的列表。它最常用于   循环。参数必须是普通整数。如果步骤参数是   省略,默认为1.如果省略start参数,则为   默认为0.完整表单返回普通整数列表[start,   开始+步骤,开始+ 2 *步骤,...]。如果步骤为正,则为最后一步   元素是最大的开始+ i *步骤少于停止;如果步骤是   否定,最后一个元素是最小的开始+ i *步骤更大   而不是停止。 step不能为零(否则引发ValueError)。   例如:

 >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 >>> range(0, 30, 5) [0, 5, 10, 15, 20, 25]
 >>> range(0, 10, 3) [0, 3, 6, 9]
 >>> range(0, -10, -1) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
 >>> range(0) []
 >>> range(1, 0) []

在您获得[0,2,4]的情况下,您可以使用:

range(0,6,2)

或者在你的情况下是var:

idx = None
for i in range(len(str1)):
    if idx and i < idx:
        continue
    for j in range(len(str2)):
        if str1[i+j] != str2[j]:
            break
    else:
        idx = i+j

答案 1 :(得分:8)

你可能只是更好地使用while循环而不是for循环。我直接从java代码翻译了你的代码。

str1 = "ababa"
str2 = "aba"
i, j = 0,0

while i < len(str1):
  j = 0
  while j < len(str2):
    if not str1[i+j] == str1[j]:
      break
    if j == (len(str2) -1):
      i += len(str2)
    j+=1  
  i++

答案 2 :(得分:6)

在python中,for循环迭代遍历iterables,而不是递增计数器,所以你有几个选择。使用像Artsiom推荐的跳过标志是一种方法。另一个选择是从您的范围生成一个生成器,并通过使用next()丢弃一个元素来手动前进。

iGen = (i for i in range(0, 6))
for i in iGen:
    print i
    if not i % 2:
        iGen.next()

但这并不完全,因为next()如果到达范围的末尾可能会抛出一个StopIteration,所以你必须添加一些逻辑来检测它并在发生这种情况时突破外部循环。

最后,我可能会选择带有while循环的aw4ully解决方案。

答案 3 :(得分:0)

for a in range(1):

    for b in range(3):
        a = b*2
        print(a)

根据您的问题,您想在内部循环的帮助下迭代外部循环。

  1. 在外循环中,我们将内循环迭代1次。
  2. 在内部循环中,我们迭代3的数字(从0开始,为2的倍数)。

    Output:
    0
    2
    4
    

答案 4 :(得分:0)

我阅读了以上所有答案,这些答案实际上是很好的。

查看以下代码:

for i in range(1, 4):
    print("Before change:", i)
    i = 20 # changing i variable
    print("After change:", i) # this line will always print 20

当我们执行上面的代码时,输​​出如下:

Before Change: 1
After change: 20
Before Change: 2
After change: 20
Before Change: 3
After change: 20
python for循环中的

并未尝试增加i的值。 for循环只是为我们提供的i赋值。使用range(4),我们要做的是将需要分配给i的值赋给for循环。

您可以使用while loop代替for loop来完成您想要做的事情,

i = 0
while i < 6:
    print(i)
    j = 0
    while j < 5:
        i += 2 # to increase `i` by 2

这会给

0
2
4

谢谢!