我有这个。
预期输出如下。如果输出中的项在列表b中,则为
我尝试了这个:
但显然这是一个语法错误。所以我尝试了这个:
这会改变整个逻辑。虽然我可以这样做。
期望的输出已获得:
但是我如何在列表推导中获得我想要的东西,或者列表推导中是否有类似于
s = ['son','abc','pro','bro']
b = ['son','bro']
c = ['pro','quo']
预期输出如下。如果输出中的项在列表b中,则为
index(item_in_s)
。如果该项在c中,则为index(item_in_s)+10
。[0,12,3]
我尝试了这个:
index_list = [s.index(item) if item in b else s.index(item)+10 if item in c for item in s]
print(index)
但显然这是一个语法错误。所以我尝试了这个:
index_list = [s.index(item) if item in b else s.index(item)+10 for item in s if item in c]
print(index)
输出:
[12]
这会改变整个逻辑。虽然我可以这样做。
fin = [s.index(item) if item in b else s.index(item)+10 if item in c else '' for item in s]
fin = [item for item in fin if item!='']
print(fin)
期望的输出已获得:
[0, 12, 3]
但是我如何在列表推导中获得我想要的东西,或者列表推导中是否有类似于
else continue
这样的语法?
[x if x in list1 else x+10 if x in list2 for x in my_list]
这样的代码会导致语法错误。 - void[x if x in list1 else x+10 if x in list2 else pass for x in my_list]
这样的东西,但我知道pass也会导致语法错误。有什么替代方案吗? - voidenumerate
代替.index
,这可以使您的算法更有效率。 - juanpa.arrivillaga