将列表[['a'], ['b']]转换为['a', 'b']。

4

除了这个问题是重复的,你尝试过什么? - phant0m
3个回答

3

试试这个:

a = [['a'],['b']]

a = [item for list in a for item in list]
print a
>>>['a', 'b']

2

尝试:

[i[0] for i in [['a'], ['b']]
>>> ['a','b']

1
2个元素的子列表怎么办? - Rohit Jain
1
这对于 [['a','b'],['c','d']] 是行不通的。 - Ashwini Chaudhary
3
这条线的工作取决于一个被问出来的问题。 - alexvassel

2
使用 itertools,特别是 itertools.chain(这比自己想办法要好得多):
>>> l = [['a'], ['b']]
>>> print(list(itertools.chain.from_iterable(l)))
['a', 'b']

这比纯列表解析方案更快:
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
10000 loops, best of 3: 53.9 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'list(itertools.chain.from_iterable(l))'
10000 loops, best of 3: 29.5 usec per loop

(本文翻译内容来自这个问题)


@RohitJain 这也是可能的,但可能不如 itertools 高效。 - arshajii
哦,关于性能我没有什么想法。所以,我会采纳你的意见。 - Rohit Jain
1
建议使用itertools.chain()而非sum(),因为例如对于元组列表,sum()无法正常工作。甚至官方文档都指出应该优先选择chain():http://docs.python.org/2/library/functions.html#sum - Ashwini Chaudhary
@AshwiniChaudhary.. 谢谢您的澄清。这非常有价值。 - Rohit Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接