【问题标题】:How to use list comprehension in python?如何在 python 中使用列表推导?
【发布时间】:2011-05-21 21:46:22
【问题描述】:

我如何使用列表推导来做到这一点:

MCs= [['foo', 180.9], ['bar', 163.5], ['noo', 140.3]] 

想要

[['foo'], ['bar'], ['noo']] 

使用

MCs = [list(x[0]) for x in MCs]

我明白了:

  [['f', 'o', 'o'], ['b', 'a', 'r'], ['n', 'o', 'o']] 

【问题讨论】:

    标签: python list


    【解决方案1】:

    你只需要这个:

    MCs = [[x[0]] for x in MCs]
    

    字符串是可迭代的,list(iterable) 返回由参数产生的元素列表(在本例中为字符)。

    【讨论】:

      【解决方案2】:

      那是因为 x[0] 是例如'foo'list 将可迭代对象转换为包含可迭代对象项的列表 - 迭代字符串一次生成一个字符。它与列表理解无关,如果您使用list('foo'),也会发生同样的事情。要制作单例列表,只需将表达式括在方括号中,即[[mc[0]] for mc in mcs]

      【讨论】:

        【解决方案3】:

        使用这个:

        [[x[0]] for x in MCs]
        

        list(c) 获取 something 的集合并将其放入列表中。字符串是字符的集合,所以你得到的就是一个字符列表。

        【讨论】:

          【解决方案4】:

          试试这个答案。

          [[x[0],] for x in MCs]
          

          所以剖析你的列表理解:

          for x in  [['foo', 180.9], ['bar', 163.5], ['noo', 140.3]]:
          # x = ['foo', 180.9] first time through
          # x[0] = 'foo'
          # list(x[0]) = ['f','o','o']
          

          【讨论】:

            【解决方案5】:

            要准确获得您的要求,请执行以下操作:

            >>> [[x[0]] for x in MCs]
            [['foo'], ['bar'], ['noo']]
            

            但也许你真正想要的是这个:

            >>> [x[0] for x in MCs]
            ['foo', 'bar', 'noo']
            

            【讨论】:

              【解决方案6】:

              使用 zip:

              [[x] for x in zip(*MCs)[0]]
              

              【讨论】:

                猜你喜欢
                • 2021-11-20
                • 1970-01-01
                • 2016-02-13
                • 1970-01-01
                • 1970-01-01
                • 2013-09-30
                • 2013-01-26
                • 2017-12-23
                • 2011-08-22
                相关资源
                最近更新 更多