Это может быть повторяющийся вопрос, но я хочу узнать, есть ли способ распаковать список списков и сделать переменную из распакованного результата? У меня есть данные в файле, например:
'[416213688, 422393399, 190690902, 81688],| [94925847, 61605626, 346027022],| [1035022, 1036527, 1038016]'
Итак, я открываю файл и составляю список
with open ('data.txt', "r") as f:
a = f.read()
a = a.split("|")
print(*a)
Выход:
[416213688, 422393399, 190690902, 81688], [94925847, 61605626, 346027022], [1035022, 1036527, 1038016]
Это результат, который мне нужен для следующего шага моей программы. Но я не могу сделать этот результат a
переменной для дальнейшего использования. Это дает мне SyntaxError: can't use starred expression here
, если я попытаюсь:
a = (*a)
Я попытался сделать это с помощью zip
, но это дает мне неправильный вывод, аналогичный тому, что описано в вопросе функция zip дает неправильный вывод.
<zip object at 0x0000000001C86108>
Итак, есть ли способ распаковать список списка и получить вывод, например:
[1st list of variables], [2nd list of variables], [etc...]
если я использую itertools, я получаю:
l = list(chain(*a))
Out: ['[', '4', '1', '6', '2', '1', '3', '6'...
это не требуется
Таким образом, рабочий вариант https://stackoverflow.com/a/46146432/8589220:
row_strings = a.split(",| ")
grid = [[int(s) for s in row[1:-1].split(", ")] for row in row_strings]
print(",".join(map(str, grid)))
itertools.chain
:from itertools import chain; l = list(chain(*a))
. - person Christian Dean   schedule 11.09.2017json.loads
? - person Ry-♦   schedule 11.09.2017split()
возвращает список. Поэтому вызовa = list(a)
является излишним. Должна ли эта распакованная переменная быть итерируемой или одной строкой строк/целых/символов? - person pstatix   schedule 11.09.2017a = (*a)
; и, как уже отмечалось,a = list(a)
является избыточным в этой точке программы. Это смутно похоже на то, что вы на самом деле пытаетесь сделать, это взять строку типа"[1, 2, 3]"
и преобразовать ее в список[1, 2, 3]
. Это оно? - person Karl Knechtel   schedule 11.09.2017