【问题标题】:How to iterate over the first n elements of a list?如何遍历列表的前 n 个元素?
【发布时间】:2011-02-10 21:33:31
【问题描述】:

假设我有一个列表,我想遍历其中的第一个 n。用 Python 编写此代码的最佳方法是什么?

【问题讨论】:

    标签: python list slice


    【解决方案1】:

    我可能会使用 itertools.islice(

    • 使用任何可迭代对象
    • 不复制列表

    用法:

    import itertools
    
    n = 2
    mylist = [1, 2, 3, 4]
    for item in itertools.islice(mylist, n):
        print(item)
    

    输出:

    1
    2
    

    一个缺点是,如果您想要一个非零开始,它必须逐个迭代到该点:https://stackoverflow.com/a/5131550/895245

    在 Python 3.8.6 中测试。

    【讨论】:

    • 请注意,当您有一个列表时,使用切片通常更简单(除非您必须担心内存使用问题或类似问题)。如果这不是 第一个 块,但如果它是稍后的块,则正常切片可以更快且更好看。
    • 很公平。加上常规切片更简洁,OP显然关心......
    【解决方案2】:

    你可以对列表进行切片:

    >>> l = [1, 2, 3, 4, 5]
    >>> n = 3
    >>> l[:n]
    [1, 2, 3]
    

    然后像使用任何可迭代对象一样对切片进行迭代。

    【讨论】:

      【解决方案3】:

      正常的方式是slicing:

      for item in your_list[:n]: 
          ...
      

      【讨论】:

      • 请注意,这会创建列表的第一个 n 元素的副本,这对于大型列表可能会很慢且占用大量内存。 itertools.islice 效率更高(也适用于任何可迭代对象)。
      【解决方案4】:

      Python 列表是 O(1) 随机访问,所以只需:

      for i in xrange(n):
          print list[i]
      

      【讨论】:

      • 修改索引通常是值得努力避免的。
      • 是的,切片更好;没想到
      猜你喜欢
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多