0

对于具有更多编程经验的人来说,这是一个非常简短且可能很容易回答的问题。如果满足某个条件,我想将我的计数器加一。我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
4

2 回答 2

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
于 2012-06-13T09:21:13.073 回答
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
于 2012-06-13T09:48:02.243 回答