簡體   English   中英

Python - 從帶有計算的列表中創建元組的最快方法

[英]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.

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