Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 减少所需if语句的数量_Python_Python 3.x_Python 2.7 - Fatal编程技术网

Python 减少所需if语句的数量

Python 减少所需if语句的数量,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我使用Python编写了以下代码: a = ["Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"] if "Porsche" in a: pass if "Google" in a: pass if "Facebook" in a: pass if "Mercedes" in a: pass if "Audi" in a: pass if "Twitter" in a:

我使用Python编写了以下代码:

a = ["Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"]

if "Porsche" in a:
    pass
if "Google" in a:
    pass
if "Facebook" in a:
    pass 
if "Mercedes" in a:
    pass
if "Audi" in a:
    pass
if "Twitter" in a:
    pass
但是,使用此代码,我不知道如何减少所需的
if
语句的数量。有没有更好的方法使用Python来实现这一点


多谢各位

我不确定你的问题是否正确。你想要更少的if语句?如果这是您想要的:这取决于您在If语句中所做的操作。如果你做类似的事情,那没问题。然后你可以使用类似的方法:

if 'Porsche' in a or 'Google' in a:
    pass

如果要执行不同的操作,则需要所有这些If语句。

如果需要较少的If语句,则可以在列表中使用for循环

例如:

a = ["Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"]

# you can change the values to whatever you want
b = ["Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"]


for i in range(len(a)):
    if b[i] in a:
        pass

另一个好处是它不是硬编码的,因此您可以将其更改为任何您想要的内容,并以更高的编程方式进行添加。

假设
pass
语句都表示相同的代码,可以使用
组合这些条件:

if ("Porsche" in a) or ("Google" in a) or ("Facebook" in a) or ("Mercedes" in a) or ("Audi" in a) or ("Twitter" in a):
    pass
(括号都是可选的,但它们使语句更易于阅读。)

使用以下工具进一步简化:


(如前所述,
(a中的x)
周围的括号是可选的,但有助于可读性。其他括号是必需的。)

假设您想检查某个内容是否是列表的成员,您可以在
中使用
来减少
if
语句的数量:

companies_list = ["Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"]
count = 0
if "Apple" in companies_list: # O(n)
   count += 1
print(count)
但是,在列表中使用
O(n)
,也就是说,它必须对照列表中的每个项目进行检查,如果您有很多项目,这是不好的

因此考虑使用集合而不是列表,因为在集合中搜索具有<代码> o(1)< /代码>查找时间:

companies_set = {"Porsche", "Google", "Facebook", "Mercedes", "Audi", "Twitter"}
count = 0
if "Apple" in companies_set: # O(1)
   count += 1
print(count)
输出:

0

if
语句中,您试图做什么?这取决于
if
块中将要做什么。一种替代方法可以是
if len(设置(事物)。交叉点(a))>0:#做某事
。这不是最好的,只是一种选择。@Poojan这似乎是一种不必要的复杂处理方式。@Poojan如果设置了(东西),你可以进一步将其简化为
。交叉点(a):#做点什么
,但是你失去了集合中
东西提供的所有可读性
0