[英]Python: fastest way to define a function using a list of 2-tuples
假设L是两个元组的列表,其中len(L)~16,000
。
L
的元素形式为(x,y),在我的情况下,x本身是7个元素的列表,而y是浮点数。
如何定义函数f,使其使用L
计算f(x)= y? 现在我正在使用朴素的代码:
def f(x):
for i in range(0,len(L)):
if x==L[i][0]:
return L[i][1]
但这花费的时间太长了。 有什么建议可以加快运行速度吗?
tabulate = dict(L)
f = tabulate.get
只要您将元组用作键而不是列表,这将起作用。
您要实现的称为关联列表,例如:
L = [ ('x', 1), ('y', 2), ('z', 3) ]
在Python中使用更好的数据结构是字典:
D = { 'x':1, 'y':2, 'z':3 }
看,您甚至可以将关联列表转换成字典:
D = dict(L)
现在,您可以从中快速检索任何值:
D['y']
=> 2
尝试使用字典,即可以用于查找的键值对列表,这对您的“功能”非常理想
这是python dict数据类型的概述:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.