1

假设 L 是两个元组的列表,其中len(L)~16,000.

的元素L是 (x,y) 的形式,在我的例子中,x 本身是 7 个元素的列表,而 y 是浮点数。

如何定义一个函数 f 以便它使用 f(x)=y 计算L?现在我正在使用天真的代码:

def f(x):  
    for i in range(0,len(L)):
        if x==L[i][0]:
           return L[i][1] 

但这需要的时间太长了。有什么建议可以让这个运行得更快吗?

4

3 回答 3

4
tabulate = dict(L)
f = tabulate.get

只要您使用元组而不是列表作为键,这将起作用。

于 2013-06-19T20:34:37.017 回答
2

您正在实施的称为关联列表,例如:

L = [ ('x', 1), ('y', 2), ('z', 3) ]

在 Python 中使用的更好的数据结构是字典:

D = { 'x':1, 'y':2, 'z':3 }

看,您甚至可以将关联列表转换为字典:

D = dict(L)

现在您可以快速从中检索任何值:

D['y']
=> 2
于 2013-06-19T20:39:46.000 回答
1

尝试使用 dict,可用于查找的键值对列表,它非常适合您的“功能”

以下是 python dict 数据类型的概述:

http://www.tutorialspoint.com/python/python_dictionary.htm

于 2013-06-19T20:36:30.480 回答