在检查多个项目时,找不到有关“尝试”与“如果”的详细信息。我有一个字符串元组,我想获取一个索引并存储它后面的索引。共有2例。你知道吗
mylist = ('a', 'b')
或者
mylist = ('y', 'z')
我想看看a
或y
,这取决于哪个存在,并获取下面的索引。目前,我正在做:
item['index'] = None
try:
item['index'] = mylist[mylist.index('a') + 1]
except ValueError:
pass
try:
item['index'] = mylist[mylist.index('y') + 1]
except ValueError:
pass
在阅读了Using try vs if in python之后,我认为这样写可能会更好/更有效,因为有一半的时间,它可能会引发异常(ValueError
),如果我理解正确的话,它比if/else更昂贵:
if 'a' in mylist:
item['index'] = mylist[mylist.index('a') + 1]
elif 'y' in mylist:
item['index'] = mylist[mylist.index('y') + 1]
else:
item['index'] = None
我的假设if
在这里更好/更有效,对吗?或者有没有更好的方式来写这个我完全不知道?你知道吗
我的观点和Rohith Subramanyam的观点很接近,我认为for循环绝对更具可读性,尤其是在有两个以上的元素要测试的情况下!你知道吗
但我仍然认为if块的使用更符合逻辑(双关语!)。严格来说,在代码行方面,它的冗余度也更小:
我认为最终使用的解决方案实际上取决于您自己,因为这取决于您的代码习惯(for循环除外,这是必须的)。你知道吗
编辑:事实上,经过一段时间的测量,罗希斯·苏布拉曼尼亚姆的版本乍一看似乎要快一点。(每个环路640纳秒,而每个环路740纳秒)
就性能而言,Python中的异常不像其他语言中的异常那么严重,您不必担心在适当的时候使用它们。你知道吗
也就是说,第二个代码片段更加简洁和干净。你知道吗
您的第一个代码段应该如下所示:
或者有这样的for循环:
IMO使用try块在性能方面更好,因为无论ValueError发生与否,您都可以避免在任何情况下进行检查,而且它的可读性和python性也更高。你知道吗
相关问题 更多 >
编程相关推荐