составление списка списков и строк в плоский список - PullRequest
0 голосов
/ 24 октября 2018

У меня есть следующее lista, которое содержит списки и строки:

['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]

Я хотел бы сделать его flat_list с таким выводом:

['IBERDROLA', 'ACCOR\xa0SA', 'ADMIRAL', 'ADECCO', 'IAG']

Возможно, яможет не использовать правильные ключевые слова, чтобы найти нужный ответ, но я нашел только Создание простого списка из списка списков в Python (без str подобных шахт) в flat_list, который даетследующий вывод:

flat_list = [item for sublist in lista for item in sublist] 

['I', 'B', 'E', 'R', 'D', 'R', 'O', 'L', 'A', 'A', 'C', 'C', 'O', 'R', '\xa0', 'S', 'A', 'ADMIRAL', 'ADECCO', 'IAG']

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Если ваш список хранится как переменная l, вы можете использовать троичный оператор с проверкой isinstance в качестве условия:

[i for s in l for i in (s if isinstance(s, list) else (s,))]
0 голосов
/ 24 октября 2018
   lst = ['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]
   new_lst = reduce(lambda x,y:x+y,[val if isinstance(val,list) else [val] for val in lst])
   print new_lst

   Result : ['IBERDROLA', 'ACCOR\xa0SA', 'ADMIRAL', 'ADECCO', 'IAG']
0 голосов
/ 24 октября 2018

Вы можете использовать функцию isinstance() для проверки типа элемента списка:

lista = ['IBERDROLA', 'ACCOR\xa0SA', ['ADMIRAL'], ['ADECCO', 'IAG']]
flat_list = []

for item in lista:
    if isinstance(item, list):
        flat_list.extend(item)
    else:
        flat_list.append(item)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...