代码之家  ›  专栏  ›  技术社区  ›  Benjamin Cintix

返回列表中每个列表的元素范围

  •  1
  • Benjamin Cintix  · 技术社区  · 15 年前

    从列表中 mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 我怎样才能得到一个新的列表列表,由每个“内部”列表e.I.的前两个元素组成。 newlist = [[1, 2], [4, 5], [7, 8]]

    3 回复  |  直到 14 年前
        1
  •  7
  •   sth    15 年前

    最简单的方法可能是使用列表理解:

    newlist = [sublist[:2] for sublist in mylist]
    
        2
  •  3
  •   Robert Kluin    15 年前

    快速回答:

    first_two = [sublist[:2] for sublist in mylist]
    

    如果有一个元组列表是可以的,那么一个更快的答案(根据我的测量是2倍):

    import operator
    map(operator.itemgetter(0, 1), mylist)
    

    t = timeit.Timer("[i[:2] for i in ll]", "ll = [[i, i + 1, i + 2] for i in xrange(1000)]")
    t.timeit(10000)
    >>> 2.2732808589935303
    
    t2 = timeit.Timer("map(operator.itemgetter(0, 1), ll)", "import operator; ll = [[i, i + 1, i + 2] for i in xrange(1000)]")
    t2.timeit(10000)
    >>> 1.3041009902954102
    
        3
  •  1
  •   kennytm    15 年前

    使用列表理解。

     newlist = [x[:2] for x in mylist]