如何从元组中间枚举

ary*_*yan 3 python enumerate python-3.x

默认情况下,enumerate()从0开始计数,但如果你给它一个第二个整数参数,它将从该数字开始,但我们如何从count和elem的特定值枚举.例如,我们希望将计数传递为'2',将elem传递为'bar'.两个值都必须传递给枚举函数.

elements = ('foo', 'bar', 'baz')
for count, elem in enumerate(elements):
    print (count, elem)
Run Code Online (Sandbox Code Playgroud)

Pat*_*ner 7

可以遍历一个切片数据,并开始在特定的整数枚举:

start_at = 1
elements = ('foo', 'bar', 'baz')
for count, elem in enumerate(elements[start_at:], start_at):
    print (count, elem)
Run Code Online (Sandbox Code Playgroud)

输出:

1 bar
2 baz
Run Code Online (Sandbox Code Playgroud)

文档:


编辑:

如果您正在使用不可切片的迭代器,则必须解决它:

start_at = 3   # first one included (0 based)
stop_at = 5    # last one (not included)

elements = ('foo', 'bar', 'baz', 'wuzz', 'fizz', 'fizzbuzz', 'wuzzfizzbuzz', 'foobarfuzzbizzwuzz')

# skip first few
it = iter(elements)
for _ in range(start_at):
    print("skipping: ", next(it))      # dont print, simply: next(it)

# enumerate the ones you want
i = start_at
for _ in range(stop_at-start_at):
    print(i,next(it))                 # you might need a try: except StopIteration:
    i+=1 
Run Code Online (Sandbox Code Playgroud)

要得到:

skipping:  foo
skipping:  bar
skipping:  baz
3 wuzz
4 fizz
5 fizzbuzz
Run Code Online (Sandbox Code Playgroud)