【问题标题】:How can loop through a list from a certain index?如何从某个索引遍历列表?
【发布时间】:2016-03-26 20:51:15
【问题描述】:

我在这里找到了答案,但它对我不起作用Accessing the index in Python 'for' loops

我正在尝试从第二个索引循环

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 处打印出第一个整数并循环到最后。

【问题讨论】:

  • 你的预期输出是什么?

标签: python list loops


【解决方案1】:

试试

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

或者

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

【讨论】:

    【解决方案2】:

    也是可迭代的解决方案(不仅仅是列表):

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

    【讨论】:

      【解决方案3】:

      一种简单的方法是使用 python 的切片表示法 - 请参阅基础教程中的部分。 https://docs.python.org/2/tutorial/introduction.html

      for item in ints[1:]:

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

      【讨论】:

        【解决方案4】:

        我不确定我是否完全理解您想要实现的目标。据我了解,如果您只想从第二个元素开始遍历列表,您可以这样做:

        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
        

        【讨论】:

          【解决方案5】:

          你可以使用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)
          

          【讨论】:

            猜你喜欢
            • 2017-10-24
            • 1970-01-01
            • 1970-01-01
            • 2023-02-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-09
            相关资源
            最近更新 更多