相关疑难解决方法(0)

Python 列表理解中的多个 If/else

我有这个

s = ['son','abc','pro','bro']
b = ['son','bro']
c = ['pro','quo']
Run Code Online (Sandbox Code Playgroud)

预期的输出是这样的。index(item_in_s)如果它出现在 list 中,则输出中的项目所在的位置b。或者index(item_in_s)+10如果一个项目在c.

[0,12,3]
Run Code Online (Sandbox Code Playgroud)

我试过这个:

index_list = [s.index(item) if item in b else s.index(item)+10 if item in c for item in s]
print(index)
Run Code Online (Sandbox Code Playgroud)

但显然这是一个语法错误。所以我试过这个:

index_list = [s.index(item) if item in b else s.index(item)+10 for item in s if item in c]
    print(index)
Run Code Online (Sandbox Code Playgroud)

输出:

[12]
Run Code Online (Sandbox Code Playgroud)

这只是改变了整个逻辑。虽然我可以做到这一点

fin = [s.index(item) if item in b else s.index(item)+10 if item in c  else '' for item …
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list python-2.7 python-3.x

4
推荐指数
2
解决办法
2万
查看次数