присоединение к списку вместе с индексами - PullRequest
0 голосов
/ 24 февраля 2019

Я работал над алгоритмом сортировки сегментов.

может быть простым, но как мне объединить эти сегменты (индексы) без прерывания второго списка.

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

скрыто втестовый файл:

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

результат, который я получаю:

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

Мне удалось отсортировать эти списки по размеру, но я не смог поместить их в один список без прерывания списка2.так как индекс будет вне диапазона.

спасибо, ребята.

Ответы [ 4 ]

0 голосов
/ 24 февраля 2019

Вы можете итеративно объединять списки в один список:

from functools import reduce
list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]

reduced = reduce((lambda x, y: x + y), list1)
print(reduced)  # prints ['aa', 'aa', 'bbbb', 'bbbb']
0 голосов
/ 24 февраля 2019

Чтобы присоединиться к элементам такого списка, просто используйте

>>> import itertools
>>> list(itertools.chain.from_iterable(list1))
['aa', 'aa', 'bbbb', 'bbbb']
0 голосов
/ 24 февраля 2019

Вы можете использовать простой цикл 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]
0 голосов
/ 24 февраля 2019

Вы можете добавлять / объединять их.

list1 = [[], ['aa', 'aa'], [], ['bbbb', 'bbbb']]
finishlist = []
for element in list1:
    finishlist = finishlist + element

print(finishlist)

вывод:

['aa', 'aa', 'bbbb', 'bbbb']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...