【问题标题】:Unpack list from single line list comprehension从单行列表理解中解包列表
【发布时间】:2017-12-29 01:05:20
【问题描述】:

这里是 Python 初学者。我有一个列表列表,我试图根据 mylist[x][0] 中的值进行过滤,并为每个结果子列表添加一个索引值。鉴于以下列表理解:

shortlist = [[x, mylist[x]] for x in range(1,20) if mylist[x][0] == 'TypeB']

我得到以下输出:

[[11, ['TypeB', 'Kline', '', '', 'Category']],
 [12, ['TypeB', '', '[Aa]bc', '', 'Category3']],
 [13, ['TypeB', '', '[Z]bc', '', 'Category']],
 [14, ['TypeB', '', 'Kline', '[Aa]bc', 'Category4']],
 [15, ['TypeB', '', '', '[Z]bc', 'Category']],
 [16, ['TypeB', '', '', 'Kline', 'Category5']],
 [17, ['TypeB', '[Aa]bc', '', '', 'Category']],
 [18, ['TypeB', '[Z]bc', '', '', 'Category2']],
 [19, ['TypeB', 'Kline', '', '', 'Category']]]

这会创建一个子列表,我想我需要用更多的代码行以某种方式解压缩,但如果我可以纠正列表理解,我宁愿不这样做。我的目标是阅读第一“行”

[[11, 'TypeB', 'Kline', '', '', 'Category'],

...和其余的输出效仿。我的尝试

shortlist = [x, mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB']

shortlist = [x for x in range(1,20) if mylist[x][0] == 'TypeB', mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB']

两者都给出语法错误。显然,我是列表理解的新手。我重视任何意见和指导。提前感谢您的宝贵时间。

【问题讨论】:

    标签: python list list-comprehension


    【解决方案1】:

    您需要将内部列表连接在一起。根据您使用的 python 版本,有几种方法可以做到这一点。

    shortlist = [[x, *mylist[x]] for x in range(1,20) if mylist[x][0] == 'TypeB']
    

    mylist[x] 的所有值解压到列表中。可能是最 “pythonic” 的方式,但只能在 python 3.5 up 中使用。

    shortlist = [[x] + mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB']
    

    将创建一个仅包含 x 的列表,然后将 mylist[x] 添加到末尾。

    【讨论】:

      【解决方案2】:

      从您的输出来看,这应该可行:

      shortlist = [[x] + mylist[x] for x in range(1,20) if mylist[x][0] == 'TypeB']
      

      [x, mylist[x]] 产生[11, ['TypeB', 'Kline', '', '', 'Category']],你就知道了

       x         -> 11
       mylist[x] -> ['TypeB', 'Kline', '', '', 'Category']
      

      因此,您希望将x 包装在一个列表中并将其与另一个连接起来。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        • 2014-02-25
        相关资源
        最近更新 更多