Python:如何从列表中获取某些内容?

Python:如何从列表中获取某些内容?,python,list,Python,List,目前我有以下清单: >>> a = list() >>> b = [1, 2, 3] >>> c = [4,5,6] >>> d = [7, 8] >>> a.append(b) >>> a.append(c) >>> a.append(d) >>> del b, c, d >>> print a [[1, 2, 3], [4, 5,

目前我有以下清单:

>>> a = list()
>>> b = [1, 2, 3]
>>> c = [4,5,6]
>>> d = [7, 8]
>>> a.append(b)
>>> a.append(c)
>>> a.append(d)
>>> del b, c, d
>>> print a
[[1, 2, 3], [4, 5, 6], [7, 8]]
  • 我想获得b、c和d上的第一项(值1、4和7)。我怎么能在一行代码中做到这一点
  • 我想获得b、c和d上的剩余项(值2、3、5、6和8)。我怎么能在一行代码中做到这一点

  • 这应该可以做到:

    [lst[0] for lst in a]
    

    它在a上迭代,并为每个元素(即列表)收集第一个值。

    这应该可以做到:

    [lst[0] for lst in a]
    

    它迭代一个元素,并为每个元素(这是一个列表)收集第一个值。

    有很多方法可以做到这一点。这将是一个:

    >>> print [x[0] for x in a]
    [1,4]
    
    或将打印内容放入for循环中:

    >>> for x in a: print x[0],
    1 4
    
    如果只需要前两个子列表的第一个元素,最基本的方法是:

    >>> print a[0][0], a[1][0]
    1 4
    

    有很多方法可以做到这一点。这将是一个:

    >>> print [x[0] for x in a]
    [1,4]
    
    或将打印内容放入for循环中:

    >>> for x in a: print x[0],
    1 4
    
    如果只需要前两个子列表的第一个元素,最基本的方法是:

    >>> print a[0][0], a[1][0]
    1 4
    
    zip(*a)
    类似于转置函数

    >>> zip(*a)
    [(1, 4), (2, 5), (3, 6)]
    
    [0]
    索引第一个元素

    >>> zip(*a)[0]
    (1, 4)
    
    第二个问题比较棘手-
    zip
    不会起作用。相反,你需要一个列表

    >>> [i for l in a for i in l[1:]]
    [2, 3, 5, 6, 8]
    
    或者,如果您不需要扁平化列表,只需:

    >>> [l[1:] for l in a]
    [[2, 3], [5, 6], [8]]
    
    zip(*a)
    类似于转置函数

    >>> zip(*a)
    [(1, 4), (2, 5), (3, 6)]
    
    [0]
    索引第一个元素

    >>> zip(*a)[0]
    (1, 4)
    
    第二个问题比较棘手-
    zip
    不会起作用。相反,你需要一个列表

    >>> [i for l in a for i in l[1:]]
    [2, 3, 5, 6, 8]
    
    或者,如果您不需要扁平化列表,只需:

    >>> [l[1:] for l in a]
    [[2, 3], [5, 6], [8]]
    

    我会选择niklas B。回答
    zip(B,c)[0]
    ,但是,为了给您更多的灵活性,如果您不知道列表中的子列表数量,您也可以尝试:

    [el[0] for el in a]
    

    并为您提供a子列表中的所有第一项。

    我选择niklas B。回答
    zip(B,c)[0]
    ,但是,为了给您更多的灵活性,如果您不知道列表中的子列表数量,您也可以尝试:

    [el[0] for el in a]
    

    并为您提供a.的子列表中的所有第一项。

    类似于
    zip(b,c)[0]
    zip(*a)[0]
    ?zip工作完美。谢谢,第二个怎么样?感谢您介绍
    [1]
    zip(*a)
    基本上提供了转置矩阵,因此您可以为其下标或在列上迭代,或者类似于
    zip(b,c)[0]
    zip(*a)[0]
    ?zip工作完美无瑕。谢谢,第二个怎么样?感谢您介绍
    [1]
    zip(*a)
    基本上提供了转置矩阵,因此您可以为它下标或迭代列或其他基本上是
    zip(*a)[0]
    ,只生成一个列表而不是一个基本上是
    zip(*a)[0]
    ,只生成一个列表而不是一个元组,但是第二个呢?我试过zip(*a)[1:],但它不起作用。谢谢谢谢,我认为列表是解决方案,但是第二个呢?我试过zip(*a)[1:],但它不起作用。谢谢谢谢,我认为列表是解决办法