簡體   English   中英

Python:使用2元組列表定義函數的最快方法

[英]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數據類型的概述:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM