如何在python中高效地执行多个IF语句
比较两组变量并在它们不相等的情况下做些什么,哪一种方法更为有效? 例如,这是可行的,但我觉得可能有比多个如何在python中高效地执行多个IF语句,python,Python,比较两组变量并在它们不相等的情况下做些什么,哪一种方法更为有效? 例如,这是可行的,但我觉得可能有比多个if语句更好的方法 #Var set A a=1 b=5 c=6 d=10 e=15 #Var set B aa=2 bb=5 cc=6 dd=10 ee=14 #comparison code if a == aa: #do something if b == bb: #do something if c == cc: #do something if d == dd
if
语句更好的方法
#Var set A
a=1
b=5
c=6
d=10
e=15
#Var set B
aa=2
bb=5
cc=6
dd=10
ee=14
#comparison code
if a == aa:
#do something
if b == bb:
#do something
if c == cc:
#do something
if d == dd:
#do something
if e == ee:
#do something
我的实际代码将需要大约50条if语句,因此我正在寻找一种更有效的方法。
谢谢
编辑
我留下了上面的原始代码,因为有些人已经回答了,但他们不确定#do something
是不同的还是相同的代码(很抱歉混淆)<代码>#做点什么是不同的。下面更能代表我正在努力实现的目标
#Var set A
a=1
b=5
c=6
d=10
e=15
#Var set B
aa=2
bb=5
cc=6
dd=10
ee=14
#comparison code
if a == aa:
a = 'match'
if b == bb:
b = 'match'
if c == cc:
c = 'match'
if d == dd:
d = 'match'
if e == ee:
e = 'match'
如果要比较项目对,可以使用
zip
创建项目对:
for left, right in zip([a,b,c,d,e],[aa,bb,cc,dd,ee]):
if left == right:
# a == aa, b == bb, etc.
如果每次“做点什么”都不一样,那么将回调作为第三个参数添加到zip:
for left, right, fn in zip([a,b,c,d,e],[aa,bb,cc,dd,ee],[fa,fb,fc,fd,fe]):
if left == right:
fn(left, right) # Assumes fa takes a and aa as arguments, etc
如果所有的“做点什么”都是一样的,你可以这样做
A = [1, 5, 6, 10, 15]
B = [2, 5, 6, 10, 14]
x = 0
while x < len(A) and x < len(B):
if A[x] != B[x]: #if not equal
#do something
x += 1
A=[1,5,6,10,15]
B=[2,5,6,10,14]
x=0
而x
如果每个人的“#做点什么”是不同的,那么你可以这样做
A = [1, 5, 6, 10, 15]
B = [2, 5, 6, 10, 14]
C = ['something1', 'something2', 'something2', 'something1', 'something3']
def something(string):
if string == 'something1':
#do something1
elif string == 'something2':
#do something2
elif string == 'something3':
#do something3
x = 0
while x < len(A) and x < len(B):
if A[x] != B[x]: #if not equal
something(C[x])
x += 1
A=[1,5,6,10,15]
B=[2,5,6,10,14]
C=['something1','something2','something2','something1','something3']
定义某物(字符串):
如果string=='something1':
#做点什么
elif字符串=='something2':
#做点什么
elif字符串=='something3':
#做点什么
x=0
而x
所有的#做点什么
是否代表相同的代码?解决方案可能会根据您的#做点什么
部分而有所不同!您可以将这两组值放入容器中,然后使用来同时迭代这两组值。您的第一步是学习聚合数据以表示您的想法。很好,尽管有点犹豫,但如果没有OP的澄清,我们不知道“做点什么”是否可以转换为函数调用——例如,它可能会在当前范围内分配变量。(请澄清一下)我只是喜欢这里的答案,我每天都能学到这样的细微差别。@alani-即使代码不适合回调,也应该可以使用容器进行赋值comparisonResults=dict()
然后分配到其中以存储它们以供以后检索。无论哪种方式,zip
都是python中进行成对操作的正确方法。