Объединение 2d списков

#python #list

#python #Список

Вопрос:

Привет, у меня есть цикл for, который создает 2D список на каждой итерации со следующей структурой

 listStructure = [(,1,2,3),(1,2,3)]
  

Проблема в том, что у меня есть следующий код

 l = []
for element in range(2):
     a function that returns the above mentioned listStructure
     l.append(listStructure)
  

и это возвращает следующую структуру

 l = [[(1,2,3),(1,2,3)],[(1,2,3),(1,2,3)]]
  

Существует ли способ либо гарантировать, что список имеет следующую структуру

 l = [(1,2,3),(1,2,3),(1,2,3),(1,2,3)]
  

или способ постобработки этого после факта, чтобы иметь вышеупомянутую структуру

Ответ №1:

Используйте list.extend :

 lst = []
for element in range(2):
     # a function that returns the above mentioned listStructure
     lst.extend(listStructure)
  

Примечание: Не называйте свою переменную list , вы затеняете встроенный тип python.

Ответ №2:

способ постобработки этого после факта, чтобы иметь вышеупомянутую структуру

Вы можете сгладить свой результат, используя itertools.chain следующий способ

 import itertools
lst = [[(1,2,3),(1,2,3)],[(1,2,3),(1,2,3)]]
lst = list(itertools.chain(*lst))
print(lst)
  

Вывод:

 [(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3)]
  

Обратите внимание, что itertools.chain возвращает итератор, который я использую list(...) для получения list .

Ответ №3:

Не используйте переменные встроенного типа python. вы можете изменить имя переменных на num, num1 или ls. что бы вы ни хотели, но не встроенный тип python.