5

Pythonのステートメントで、タプルよりもリストを優先する、またはその逆を行う正当な理由があるかどうか疑問に思っていifます。それで、以下は機能的に同等ですが、パフォーマンスとコーディングスタイルの点で一方が他方よりも好ましいですか、それとも問題ではありませんか?

if x in (1,2,3):
    foo()

if x in [1,2,3]:
    foo()

2つまたは3つの値とリストがある場合、タプルを使用する習慣がついたようです。私の経験では、タプルは短く、リストが長い傾向があるためですが、これは少し恣意的で、おそらく不必要に矛盾しているようです。

私は、一方が他方よりも優れている場所について人々が示すことができる例に興味があります。

乾杯

4

2 に答える 2

5

tuple(少なくともCPythonでは)の初期化は、 list-よりも少ないバイトコードを生成しますが、実際には心配する必要はありません。メンバーシップテストはほとんど同じだと思います(テストはしていませんが)。

純粋なメンバーシップテストの場合、ルックアップセマンティクスは同じです。Python 2.7以降では、記述がはるかに優れています(そして、メンバーシップテストのみであるという意味が追加されています)。

if x in {1, 2, 3}:
    pass # do something

その前に:

if x in set([1,2,3]):
    pass # do something

少しぎこちなく見えました...

于 2012-09-13T15:22:05.733 に答える
0

リストとタプルの違いは、リストは可変であり、タプルは不変であるということです。

人々は、Cの構造体と同様に、異種コレクションにタプルを使用する傾向があり、Cの配列と同様に、同種コレクションにリストを使用する傾向があります。

于 2012-09-13T15:18:27.037 に答える