[Python的3.1]的Python:可變長度元組
我的設計概念,即元組應當是已知長度的以下(見this comment)和未知長度的元組應當使用列表在大多數情況下更換。我的問題是我應該在什麼情況下偏離這個規則?
例如,我知道元組比字符串更快地創建字符串和數字字面值(請參閱another comment)。所以,如果我有性能關鍵的代碼,其中有很多計算,如sumproduct(tuple1, tuple2)
,我是否應該重新定義它們在列表中工作,儘管性能受到影響? (sumproduct((x, y, z), (a, b, c))
被定義爲x * a + y * b + z * c
,其參數未指定,但長度相等)。
那麼使用def f(*x)
時由Python自動構建的元組呢?我認爲這不是我每次使用它時都要列出的東西。
順便說一句,是(x, y, z)
更快創建比[x, y, z]
(變量而不是文字)?
也許你說在此之前,另一些則沒有,你應該做一些剖析。嘗試在timeit中從數字和字符串文字構造元組和列表,並查看會發生什麼。另外,關於混淆python的所有內容是什麼?元組如何混淆任何東西?似乎對我完全清楚。 – aaronasterling 2010-11-18 10:30:04
如果在代碼使用列表更清晰的情況下使用元組,那麼它就是混淆代碼。一個元組本身可能對任何人都是清楚的,但它是一塊更大的代碼塊。閱讀Ned Batchelder的回答。如果你需要一個使用它。如果你需要其他用途。 「常量時間」O(1)中構造元組和列表。那麼它是否值得讓一點速度妥協設計? – 2010-11-18 22:55:25