如何从元组中间枚举

时间:2019-01-25 13:00:28

标签: python python-3.x enumerate

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

elements = ('foo', 'bar', 'baz')
for count, elem in enumerate(elements):
    print (count, elem)

2 个答案:

答案 0 :(得分:7)

您可以迭代数据slice并以特定整数开始枚举:

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

输出:

1 bar
2 baz

文档:


编辑:

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

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 

获得:

skipping:  foo
skipping:  bar
skipping:  baz
3 wuzz
4 fizz
5 fizzbuzz

答案 1 :(得分:1)

想要以非标准方式进行迭代时,应该在itertools模块中查看

在这种情况下,请使用islice

要获取起始索引,请使用容器的.index函数(如果要从第二个位置进行迭代,而不考虑其内容,则可以将其硬编码为1,结束索引为{{1} }的容器

len