因此,只需在 stack-overflow/google 中输入 python flatten list 就会返回大量重复的结果。我已经尝试了所有这些,但没有一个适用于这个特定的实例。
我从 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
我不知道如何修改列表列表中的内部列表。如果有比我迄今为止尝试过的更好的方法,我很想听听。在此先感谢您的帮助。