Из 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(',') возвращает список проанализированных элементов, в этом контексте он должен быть допустимым для цикла?

1
blue-sky 10 Янв 2017 в 20:01

5 ответов

Лучший ответ

Наиболее эффективный: избегайте 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']
3
Jean-François Fabre 10 Янв 2017 в 17:07

У тебя почти было это. У вас был for прямо на первом. Похоже, что после split парень сбил вас с толку и заставил вас вернуться к другому языку программирования, который ставит скобки вокруг критериев 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
Bruno Bronosky 10 Янв 2017 в 20:05

Вам действительно не нужен внутренний цикл.

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
cricket_007 10 Янв 2017 в 17:04

У вас есть лишние скобки. Пытаться

comb = []
for x in data:
    for y in x.split(','):
        comb.append(y)
0
nbryans 10 Янв 2017 в 17:04

Один лайнер:

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

Выход:

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

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

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

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

print(comb)
0
Inconnu 10 Янв 2017 в 17:21