[英]Python - Fastest way to create a tuple from a list with computations
我需要以最快的方式從列表中創建一個 Python 元組,但需要進行中間計算。 為了更清楚,我放了一個代碼片段:
a=[1,2,3,4]
b=tuple([id(x) for x in a])
這就是我現在所擁有的。 還有比這更好的嗎? 此代碼創建一個列表,然后將其轉換為元組,有沒有辦法直接創建元組?
謝謝!
[編輯] 正如我所建議的那樣
b=tuple(id(x) for x in a)
不過好像比以前慢了點。 測試腳本:
import time
a=[1,2,3,4]
t1=time.time()
for i in range(1000000):
b=tuple([id(x) for x in a])
print(time.time()-t1)
t2=time.time()
for i in range(1000000):
b=tuple(id(x) for x in a)
print(time.time()-t2)
這對我來說非常出乎意料。
使用列表理解更快。 這是因為元組的大小是預先知道的(可以為len(list)
項分配內存)。
使用生成器,需要先將生成器轉換為序列,才能分配元組。 由於生成器的固有開銷,這會更慢。
最快的選擇自然是根本不使用元組,而是使用列表。 在我看來,元組與“不可變列表”不同; 只有當需要使用序列作為字典鍵或集合元素時,或者當您可以命名每個元素(如namedtuple
)時,才應該真正使用 tuple 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.