2017-01-10 3 views
1

От data = ["1,2","3,4"] Я пытаюсь создать список строк: ["1","2","3","4"]Создать единый список из списка списков

Попытка этот код:

comb = [] 
for x in data: 
    for(y in x.split(',')): 
     comb.append(y) 

возвращается:

File "<ipython-input-46-20897dcf51a1>", line 4 
    for(y in x.split(',')): 
         ^
SyntaxError: invalid syntax 

Как x.split(',') возвращает список проанализированных элементов, в этом контексте он должен быть действительным для цикла?

+4

Снять внешние парсеры. 'для y в x.split (','):' – jszakmeister

+0

В качестве альтернативы вы можете использовать понимание списка так: 'comb = [i для x в данных для i в x.split (',')]' –

ответ

3

наиболее производительным: избежать append, extend: просто сделать список понимание с 2 плоскими петлями:

data = ["1,2","3,4"] 
data_flat = [x for c in data for x in c.split(",")] 

print(data_flat) 

результат:

['1', '2', '3', '4'] 
+0

Почему «for» добавлено «x» в: [x для c в данных для x в c.split («,»)] –

+0

это написано наоборот: x - это элемент, созданный в циклах, описанных после Это. список понимание синтаксис. –

0

У вас есть дополнительная скобка. Попробуйте

comb = [] 
for x in data: 
    for y in x.split(','): 
     comb.append(y) 
0

Вам не нужен внутренний контур.

In [1]: data = ["1,2","3,4"] 

In [2]: comb=list() 

In [3]: for d in data: 
    ...:  comb.extend(d.split(",")) 
    ...: 

In [4]: comb 
Out[4]: ['1', '2', '3', '4'] 
0

Вы почти имели его. У вас был for прямо на первом. Кажется, что parens после split смутили вас и заставили вас вернуться к другому языку программирования, который ставит parens вокруг for и if критериев. Удалив посторонние парсы из for y, вы можете исправить это.

In [22]: data = ["1,2","3,4"] 
    ...: 
    ...: comb = [] 
    ...: 
    ...: for x in data: 
    ...:  for y in x.split(','): 
    ...:   comb.append(y) 
    ...: 

In [23]: comb 
Out[23]: ['1', '2', '3', '4'] 
+0

Бруно, комментарий в бинго :) –

0

Один лайнер:

print([item for sublist in ["1,2","3,4"] for item in sublist.split(',')]) 

Выход:

['1', '2', '3', '4'] 

Но ваш код абсолютно fine.The проблема заключалась в том, что дополнительные скобки вы дали в вашей цикл:

data = ["1,2","3,4"] 

comb = [] 
for x in data: 
    for y in x.split(','): #corrected 
     comb.append(y) 

print(comb) 
Смежные вопросы