Python中的“in”有什么反转吗?

时间:2017-04-20 00:44:58

标签: python

在Python中,我可以看到关键字in可以有效地用于检查子字符串,如:str1 in str2

无论如何都要执行in的反转版本,就像有(假设)关键字contain来表示str2 contain str1一样?这是为了编写代码的流程,如:

if str contain "foo":
    return 1
elif str contain "bar":
    return 2
elif str contain "boo":
    return 3
elif str contain "far":
    return 4
else
    return 5

就个人而言,(假设)上面的代码比使用in更具可读性:

if "foo" in str:
    return 1
elif "bar" in str:
    return 2
elif "boo" in str:
    return 3
elif "far" in str:
    return 4
else
    return 5

3 个答案:

答案 0 :(得分:5)

事实上,有一种__contains__方法与您描述的方法非常相似:

>>> 'the quick brown fox'.__contains__('quick')
True

还有一个没有下划线的contains函数:

>>> from operator import contains
>>> contains('the quick brown fox', 'quick')
True

答案 1 :(得分:1)

你可以使用{em>在失败时退回-1的str.find方法:

if str.find('foo') != -1:
    # do something

实施例

"asdfoo".find('foo')
# 3

"asdfo".find('foo')
# -1

答案 2 :(得分:0)

建议的包含关键字不会为该语言添加任何功能。也许您发现它更具可读性,但 in 运算符存在于其他语言中。另外,请注意“包含”是一个动词,当它没有正确共轭时,它读得不那么好。

考虑将反转原则应用于其他上下文,例如赋值:为了更具可读性,我们应该计算左边的值,然后在右边给出目的地。