2017-04-21 56 views
0

我试过itertools,map()但我不知道什么是错的。 IHAVE这样的:在列表中连接列表的列表Python3

[['>Fungi|A0A017STG4.1/69-603 UP-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', ['-', '-', '-', ... , '-', '-', '-', '-']],['>Fungi|A0A017STG4.1/69-603 UP1-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', ['-', '-', '-', ... , '-', '-', '-', '-']],['>Fungi|A0A017STG4.1/69-603 UP12-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', ['-', '-', '-', ... , '-', '-', '-', '-']]] 

我想这一点:

[['>Fungi|A0A017STG4.1/69-603 UP-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}','-', '-', '-', ... , '-', '-', '-', '-'],['>Fungi|A0A017STG4.1/69-603 UP1-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}','-', '-', '-', ... , '-', '-', '-', '-'],['>Fungi|A0A017STG4.1/69-603 UP10-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}','-', '-', '-', ... , '-', '-', '-', '-']] 

我试图

for i in x: 
    map(i,[]) 

import itertools 
a = [["a","b"], ["c"]] 
print list(itertools.chain.from_iterable(a)) 

请赐教!

+0

[Flatten(an irregular)list of list]可能的重复](http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists) –

回答

1

必须有更好的Python化解决方案,但你可以使用:

n = [] 
for x in your_list: 
    temp_list = [x[0]] 
    [temp_list.append(y) for y in x[1]] 
    n.append(temp_list) 

print(n) 

输出:

[['>Fungi|A0A017STG4.1/69-603 UP-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', '-', '-', '-', Ellipsis, '-', '-', '-', '-'], ['>Fungi|A0A017STG4.1/69-603 UP1-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', '-', '-', '-', Ellipsis, '-', '-', '-', '-'], ['>Fungi|A0A017STG4.1/69-603 UP12-domain-containing protein {ECO:0000313|EMBL:EYE99555.1}', '-', '-', '-', Ellipsis, '-', '-', '-', '-']] 
0

简单oneliner可以这样做:

[sum(x, []) for x in yourlist] 

没有TE总和(X,[])是相当缓慢的,所以对于严重列表合并使用更多的乐趣和照明快速列表合并技术,可在

join list of lists in python

例如所讨论的,简单的两衬垫的方式更快

import itertools 
map(list, (map(itertools.chain.from_iterable, yourlist)))