我一直在研究桶排序算法。
可能很简单,但是我如何将这些存储桶(索引)连接在一起而不中断第二个列表。
list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]
隐藏在测试文件中:
list2 = [[], ['aa', 'aa']]
我追求的结果是:
list1 = ['aa', 'aa', 'bbbb', 'bbbb']
list2 = ['aa', 'aa']
我设法按大小对这些列表进行排序,但是在不中断list2的情况下无法将它们放入单个列表中。因为索引将超出范围。
谢谢大家。
答案 0 :(得分:3)
要加入此类列表的元素,只需使用
>>> import itertools
>>> list(itertools.chain.from_iterable(list1))
['aa', 'aa', 'bbbb', 'bbbb']
答案 1 :(得分:0)
您可以添加/包含它们。
list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]
finishlist = []
for element in list1:
finishlist = finishlist + element
print(finishlist)
输出:
['aa', 'aa', 'bbbb', 'bbbb']
答案 2 :(得分:0)
您可以使用简单的for
循环:
list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]
l = []
for i in list1:
l += i # or l.extend(i)
print(l)
# ['aa', 'aa', 'bbbb', 'bbbb']
或者您可以使用列表理解:
[i for subl in list1 for i in subl]
答案 3 :(得分:0)
您可以迭代地将列表合并为一个列表:
from functools import reduce
list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]
reduced = reduce((lambda x, y: x + y), list1)
print(reduced) # prints ['aa', 'aa', 'bbbb', 'bbbb']