如何从特定索引开始循环遍历列表?

9
我在这里找到了答案,但对我不起作用 Python中访问'for'循环中的索引 我试图从第二个索引开始循环。
ints = [1, 3, 4, 5, 'hi']

for indx, val in enumerate(ints, start=1):
    print indx, val

for i in range(len(ints)):
   print i, ints[1]

我的输出是这个

1 1
2 3
3 4
4 5
5 hi
0 3
1 3
2 3
3 3
4 3

我需要从索引1开始打印出第一个整数,并遍历至结束。


2
你期望的输出是什么? - Iron Fist
5个回答

15

一个简单的方法是使用Python的切片符号-请参阅基础教程中的相关章节。https://docs.python.org/2/tutorial/introduction.html

for item in ints[1:]:

这将遍历列表并跳过第一个元素。由于您实际上不需要索引,因此这种实现比那些不必要地维护索引的实现更清晰。


10

尝试

for idx, val in enumerate(ints[1:], start=1)
    print idx, val

或者

for i in range(1, len(ints)):
    print i, ints[i]

3

我不确定我完全理解你想要达到的目标。据我理解,如果你只想从第二个元素开始循环遍历列表,你可以这样做:

ints = [1, 3, 4, 5, 'hi']

for i in range(1,len(ints)):
    print i, ints[i]

输出:

1 3
2 4
3 5
4 hi

如果您想循环遍历所有元素,但要从1开始而不是0打印索引:

ints = [1, 3, 4, 5, 'hi']

for i in range(len(ints)):
    print i+1, ints[i]

输出:

1 1
2 3
3 4
4 5
5 hi

或者使用enumerate()遍历所有元素,但输出的下标从1开始而不是0:

ints = [1, 3, 4, 5, 'hi']

for i, el in enumerate(ints):
    print (i+1), el

输出:

1 1
2 3
3 4
4 5
5 hi

2
您可以使用 itertools.islice
import itertools

for idx, el in enumerate(itertools.islice(ints, 1, None), start=1):
    print(idx, el)

或者如果你只想跳过第一个元素:

for idx, el in enumerate(ints):
    if idx == 0:
        continue
    print(idx, el)

0

对于可迭代对象也适用的解决方案(不仅限于列表):

def enumerate_from(start_index, iterable):
    for i, x in enumerate(iterable):
        if i >= start_index:
            yield i, x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接