对 IF 语句使用 OR 比较
问题描述
在 Python 中使用 IF 语句时,您必须执行以下操作才能使级联"正常工作.
When using IF statements in Python, you have to do the following to make the "cascade" work correctly.
if job == "mechanic" or job == "tech":
print "awesome"
elif job == "tool" or job == "rock":
print "dolt"
有没有办法让 Python 在检查等于"时接受多个值?例如,
Is there a way to make Python accept multiple values when checking for "equals to"? For example,
if job == "mechanic" or "tech":
print "awesome"
elif job == "tool" or "rock":
print "dolt"
解决方案
if job in ("mechanic", "tech"):
print "awesome"
elif job in ("tool", "rock"):
print "dolt"
括号中的值是一个元组.in
运算符检查左侧项目是否出现在右侧句柄元组内的某个位置.
The values in parentheses are a tuple. The in
operator checks to see whether the left hand side item occurs somewhere inside the right handle tuple.
请注意,当 Python 使用 in
运算符搜索元组或列表时,它会进行线性搜索.如果右侧有大量项目,这可能是性能瓶颈.一种更大规模的方法是使用 frozenset
:
Note that when Python searches a tuple or list using the in
operator, it does a linear search. If you have a large number of items on the right hand side, this could be a performance bottleneck. A larger-scale way of doing this would be to use a frozenset
:
AwesomeJobs = frozenset(["mechanic", "tech", ... lots of others ])
def func():
if job in AwesomeJobs:
print "awesome"
如果在程序运行期间不需要更改出色作业列表,则首选使用 frozenset
而不是 set
.
The use of frozenset
over set
is preferred if the list of awesome jobs does not need to be changed during the operation of your program.
相关文章