Таким образом, просто ввод списка выравнивания python в stack-overflow/google возвращает огромное количество повторяющихся результатов. Я пробовал все из них, и ни один из них не подходит для этого конкретного случая.
Я получаю набор результатов базы данных от pyodbc, который дает мне структуру данных, которую я могу привести к списку списков. Первый элемент (первый столбец) в каждой возвращаемой строке имеет вид "a.b.c"
. Я бы хотел, чтобы это было "a", "b", "c"
. Моим первым побуждением было разделить период, что я и сделал.
До:
[["a.b.c", "d", 1], ["e.f.g", "h", 2], ... ] # rows left out for brevity
После:
# unfortunately, split returns a list, which then gets nested
[[["a", "b", "c"], "d", 1], [["e", "f", "g"], "h", 2], ... ]
Однако то, что я хотел бы видеть, это:
[["a", "b", "c", "d", 1], ["e", "f", "g", "h", 2], ... ]
Я попробовал предыдущие решения по переполнению стека для выравнивания списка, но, хотя все упоминают вложенные списки, никто не говорит, как выравнивать только вложенные списки.
Я пытался:
from itertools import chain
for row in rows:
row = list(chain(row)) # python won't allow modifications in a loop
и
rows = [list(chain(row)) for row in rows]
Я предполагаю, что должен быть способ, возможно, с доходностью, сделать что-то вроде:
for row in rows:
row = row[0].append(row[1:]) # but this doesn't work either
Я не знаю, как изменить внутренние списки в списке списков. Если есть лучший способ, чем то, что я пробовал до сих пор, я хотел бы услышать его. Заранее спасибо за вашу помощь.
row
к новому значению, это < i>разрешено, но ничего не получается... - person jamylak   schedule 21.04.2013