Python 2.7 将列表列表中的元素拆分为新元素

Python 2.7 将列表列表中的元素拆分为新元素,python-2.7,Python 2.7,我有如下列表: lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']] 我想检查每个元素,并将第二个元素压缩为['1_A'、'1_C'、'1_B']。因此,我的最终输出是 lofl = [['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']] 我尝试了以下方法,但没有成功 deflate = [i for i in tre_exr for j in i str(i).spli

我有如下列表:

lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
我想检查每个元素,并将第二个元素压缩为['1_A'、'1_C'、'1_B']。因此,我的最终输出是

lofl = [['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]
我尝试了以下方法,但没有成功

deflate = [i for i in tre_exr for j in i str(i).split(",")]
我得到了无效的语法。有人能告诉我问题出在哪里吗

提前谢谢


Arun

我对python有点陌生,所以这需要一点时间来理解!下面是我能想到的最简洁的解决方案

import itertools
lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]

new = [list(itertools.chain(*[c.split(',') for c in l])) for l in lofl]

print new

我对python有点陌生,所以这需要一点了解!下面是我能想到的最简洁的解决方案

import itertools
lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]

new = [list(itertools.chain(*[c.split(',') for c in l])) for l in lofl]

print new

如果你想要一个简单易读的解决方案,我想这是最好的选择

lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]

result = []
for item in lofl:
    x = []
    for i in item:
        x += i.split(',')
    result.append(x)

>>> result
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]

如果你想要一个简单易读的解决方案,我想这是最好的选择

lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]

result = []
for item in lofl:
    x = []
    for i in item:
        x += i.split(',')
    result.append(x)

>>> result
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]

你很接近,你只是在列表中加入了一个多余的i;同样,在最后,也就是在列表的开头,你想要的是内部的j,而不是外部的i。此外,无需转换为str:

对于整个列表,您必须将其包装到另一个列表中:

>>> lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
>>> [[j for i in tre_exr for j in i.split(",")] for tre_exr in lofl]
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]

你很接近,你只是在列表中加入了一个多余的i;同样,在最后,也就是在列表的开头,你想要的是内部的j,而不是外部的i。此外,无需转换为str:

对于整个列表,您必须将其包装到另一个列表中:

>>> lofl = [['3_A', '1_E'], ['1_A', '1_C,1_B'], ['1_B', '1_C']]
>>> [[j for i in tre_exr for j in i.split(",")] for tre_exr in lofl]
[['3_A', '1_E'], ['1_A', '1_C', '1_B'], ['1_B', '1_C']]