【问题标题】:split items in list拆分列表中的项目
【发布时间】:2012-09-30 06:42:30
【问题描述】:

如何翻下面的列表

['1','2','A,B,C,D','7','8']

进入

['1','2','A','B','C','D','7','8']

以最pythonic的方式?

我有非常不合 Python 的代码创建嵌套列表,然后奉承:

sum ( [ word.split(',') for word in words ], [] )

【问题讨论】:

    标签: python list split


    【解决方案1】:
    In [1]: from itertools import chain
    
    In [2]: lis=['1','2','A,B,C,D','7','8']
    
    
    In [5]: list(chain(*(x.split(',') for x in lis)))
    Out[5]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']
    

    进一步减少不需要的split() 调用:

    In [7]: list(chain(*(x.split(',') if ',' in x else x for x in lis)))
    Out[7]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']
    

    使用map():

    In [8]: list(chain(*map(lambda x:x.split(','),lis)))
    Out[8]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']
    
    In [9]: list(chain(*map(lambda x:x.split(',') if ',' in x else x,lis)))
    Out[9]: ['1', '2', 'A', 'B', 'C', 'D', '7', '8']
    

    【讨论】:

    • -0。所有这些花费的时间几乎是 J.F. Sebastian 的清洁工 result = [item for word in words for item in word.split(',')] 的两倍。
    【解决方案2】:
    result = [item for word in words for item in word.split(',')]
    

    【讨论】:

      【解决方案3】:
            k=k=['1','2','A,B,C,D','7','8']
            m=[i for v in k for i in v if i!=","]
      

      【讨论】:

        猜你喜欢
        • 2014-03-21
        • 2019-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多