我写了一些像这样的代码,它运行良好并且可以满足我的要求:
#!/usr/bin/env python3
myList = [[0], [1, 2], {'val': [3, 4, 5]}, [6]]
flat1 = []
for sublist in myList:
if type(sublist) is list:
for item in sublist:
flat1.append(item)
else:
for item in sublist['val']:
flat1.append(item)
print(flat1)
Run Code Online (Sandbox Code Playgroud)
所以这是标准嵌套列表展平的一个转折。不同的是,一些嵌套项目实际上并不是列表,而是带有“val”的字典(在这些情况下,我们希望项目位于“val”列表中)。
我正在尝试将其变成列表理解。这是我尝试过的:
flat2 = [item for sublist in myList for item in sublist if type(sublist) is list else for item in sublist['val']]
print(flat2)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,其中插入符号指向“else”。
语法错误:语法无效
是的,我写到列表理解中的内容似乎是无稽之谈,毫无疑问编译器不知道我要做什么。
是否可以通过列表理解来完成我想要做的事情?
python-3.x ×1