在python3.5中,我需要在biglist中搜索和排序大量数据,并将它们排序到其他列表中。 当我完成编码时,我意识到如果我只需要检查biglist中的项,我应该使用switch语句来提高代码的效率。谈到python我还处于初级水平。我在Python3.5中搜索switch语句,结果震惊地发现python中不存在这样的语句(我用C、Java和JavaScript编写了一点程序,它们都有switch语句,所以我想这应该是每种语言中都必须存在的流控制语句)
我要搜索biglist的代码部分当前如下所示:
for item in biglist:
if item == String1:
list1.append(biglist[biglist.index(item) + 1])
continue
#
#this goes on till String10 and ends like this
#
elif item == String10:
list10.append(biglist[biglist.index(item) + 1])
continue
else:
break
对于一个数据集,整个程序大约需要12个小时才能完成。我需要再做4次,但是在我这么做之前,如果我还没有实现最有效的解决方案的话,我希望能给我一些建议,甚至是解决方案,来让我的代码更高效、更快。在
请解释一下为什么这个解决方案更有效,因为我想了解它。在
效率低下与“switch”的存在或其他情况无关,而是使用
.index()
方法,这会导致对列表进行全面扫描以找到您的项目。不需要这样做,您可以使用enumerate
函数返回索引:这可以模拟
switch
。在最有可能的性能问题不是switch-like if语句,而是在O(n)(Complexity of list.index(x) in Python)中运行的
biglist.index(item)
操作。在使用类似于:
跟踪项目的索引。在
如果你还想替换If语句,你可以使用一个字典,它为每个可能的项值存储一个列表。在
相关问题 更多 >
编程相关推荐