将列表与索引一起加入

时间:2019-02-23 21:19:15

标签: python python-3.x sorting indexing

我一直在研究桶排序算法。

可能很简单,但是我如何将这些存储桶(索引)连接在一起而不中断第二个列表。

list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]

隐藏在测试文件中:

list2 = [[], ['aa', 'aa']]

我追求的结果是:

list1 = ['aa', 'aa', 'bbbb', 'bbbb']
list2 = ['aa', 'aa']

我设法按大小对这些列表进行排序,但是在不中断list2的情况下无法将它们放入单个列表中。因为索引将超出范围。

谢谢大家。

4 个答案:

答案 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']