小编bra*_*aks的帖子

Python 列表理解 - 条件 for 循环

我写了一些像这样的代码,它运行良好并且可以满足我的要求:

#!/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
推荐指数
1
解决办法
1452
查看次数

标签 统计

python-3.x ×1