使用xrange()增加某些条件

时间:2012-06-13 09:14:55

标签: python increment xrange

对于具有更多编程经验的人来说,这是一个非常简短且可能很容易回答的问题。如果满足某个条件,我想把我的计数器加1。我在xrange()循环中使用for。我可以手动增加i还是必须由自己的计数器构建?

for i in xrange(1,len(sub_meta),2):
    if sub_meta[i][1] < sub_meta[i-1][1]:
            dict_meta[sub_meta[i-1][0]]= sub_meta[i][0]
    elif sub_meta[i][1] == sub_meta[i-1][1]:
            dict_meta[sub_meta[i-1][0]]= ''
            i += 1

2 个答案:

答案 0 :(得分:4)

i = 1
while i < len(sub_meta):
    if sub_meta[i][1] < sub_meta[i-1][1]:
        dict_meta[sub_meta[i-1][0]]= sub_meta[i][0]
    elif sub_meta[i][1] == sub_meta[i-1][1]:
        dict_meta[sub_meta[i-1][0]]= ''
        i += 1
    i += 2

答案 1 :(得分:1)

如果你打算经常这样做,这里有一个利用生成器send()方法的实现:

def changeable_range(start, stop=None, step=1):
    if stop is None: start, stop = 0, start
    while True:
        for i in xrange(start, stop, step):
            inc = yield i
            if inc is not None:
                start, stop = i, stop + inc
                break
        else:
            raise StopIteration

用法:

>>> myRange = changeable_range(3)
>>> for i in myRange: print i
... 
0
1
2
>>> myRange = changeable_range(3)
>>> for i in myRange:
...     print i
...     if i == 2: junk = myRange.send(2) #increment the range by 2
... 
0
1
2
3
4