Разделение строковых значений в списке на отдельные значения, Python - PullRequest
1 голос
/ 22 июня 2019

У меня есть список значений, в которых некоторые значения являются словами, разделенными запятыми, но считаются одиночными строками, как показано:

l = ["a",
     "b,c",
     "d,e,f"]

#end result should be
#new_list = ['a','b','c','d','e','f']

Я хочу разбить эти строки, и мне было интересно, есть ли один лайнер или что-то короткое, чтобы сделать такую ​​мутацию. Что ж, я думал о том, чтобы просто пройтись по l и .split(',') - объединить все элементы, а затем объединить, но кажется, что для запуска потребуется некоторое время.

Ответы [ 4 ]

1 голос
/ 22 июня 2019

Вид необычный, но вы можете join все свои элементы с ,, а затем split их:

l = ["a",
     "b,c",
     "d,e,f"]

newList = ','.join(l).split(',')
print(newList)

Вывод:

['a', 'b', 'c', 'd', 'e', 'f']
1 голос
/ 22 июня 2019
import itertools
new_list = list(itertools.chain(*[x.split(',') for x in l]))

print(new_list)
>>> ['a', 'b', 'c', 'd', 'e', 'f']
0 голосов
/ 22 июня 2019

Вот одна строка, использующая (вложенный) список понимания:

new_list = [item for csv in l for item in csv.split(',')]

Смотрите, запустите здесь .

0 голосов
/ 22 июня 2019

Не только однострочник, но 2 строки:

>>> l = ["a",
     "b,c",
     "d,e,f"]
>>> ll =[]
>>> [ll.extend(x.split(',')) for x in l]
[None, None, None]
>>> ll
['a', 'b', 'c', 'd', 'e', 'f']

Аккумулятор необходимо создавать отдельно, поскольку x.split(',') не может быть распакован внутри содержимого.

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