如果在另一个列表中找不到一个列表中的元素,我如何在列表解析中使用else?

时间:2018-01-16 22:05:00

标签: python-3.x list-comprehension

在Hackerrank Sparse Arrays挑战中,我有两个字符串列表,S和Q.对于Q的每个元素,我需要计算S中匹配字符串的数量。我几乎有这个工作,但我想使用else语句来说明找不到匹配字符串的情况。下面是我的代码,通过查看关于该主题的其他堆栈问题,我不清楚为什么这不起作用(其他地方有语法错误,但是否则所有计数都正确完成)虽然看起来我可能需要将ifhis语句的特定部分作为父母。

res=[S.count(s) for s in Q if s in S else 0]

1 个答案:

答案 0 :(得分:1)

你的语法有点纠结,就是这样。你需要:

res=[S.count(s) if s in S else 0 for s in Q]

但你实际上并不需要那个,你可以做到 -

res=[S.count(s) for s in Q]

甚至只是

res = list(map(S.count, Q)]

如果你想要花哨。

对于Q中不在S中的任何值,您将得到0。