【问题标题】:Python - How to get the first row of each list?Python - 如何获取每个列表的第一行?
【发布时间】:2013-08-30 12:25:49
【问题描述】:

我需要获取列表的每一行并创建一个新列表。让我解释一下。

我有这个:

data = [[204.0, u'stock'], [204.0, u'stock']]

我需要改造一下:

column1 = [204.0, 204.0]
colunm2 = [u'stock', u'stock']

关于如何做到这一点的任何线索?

最好的问候,

【问题讨论】:

    标签: python list reshape


    【解决方案1】:

    使用zip():

    >>> data = [[204.0, u'stock'], [204.0, u'stock']]
    >>> zip(*data)
    [(204.0, 204.0), (u'stock', u'stock')]
    >>> column1, column2 = zip(*data)
    >>> column1
    (204.0, 204.0)
    >>> column2
    (u'stock', u'stock')
    

    或者,izip() 来自 itertools

    >>> from itertools import izip
    >>> column1, column2 = izip(*data)
    >>> column1
    (204.0, 204.0)
    >>> column2
    (u'stock', u'stock')
    

    【讨论】:

      【解决方案2】:

      一个简单的列表推导就可以解决问题。

      data = [[204.0, u'stock'], [204.0, u'stock']]
      
      column1 = [i[0] for i in data]
      column2 = [i[1] for i in data]
      
      >>> column1
       [204.0, 204.0]
      >>> column2
       ['stock', 'stock']
      

      【讨论】:

        【解决方案3】:

        可能,在一行中

        >>> data = [[204.0, u'stock'], [204.0, u'stock']]
        >>> columns = [ [d[k] for d in data] for k in range(2)]
        [[204.0, 204.0], ['stock', 'stock']]
        >>> columns[0]
        [204.0, 204.0]
        

        如果变量的大小可以改变,你可以这样做:

        columns = [ [d[k] for d in data] for k in range(max(map(len,data)))]
        

        【讨论】:

          猜你喜欢
          • 2017-05-17
          • 1970-01-01
          • 2017-11-05
          • 2017-08-25
          • 2015-07-15
          • 1970-01-01
          • 2020-07-31
          • 2011-08-10
          相关资源
          最近更新 更多