3

tそれを作るときにの要素にアクセスするこの違いがあるのはなぜtupleですか?

>>> t = [('ID','int')]
>>> for r in t:
print r


('ID', 'int')


t = (('ID','int'))
>>> for r in t:
print r


ID
int

これは最初の例とまったく同じだと思います!タプルに複数の要素を追加すると、動作が変わります。

>>> t = (('ID','int'),('DEF','str'))
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')
>>> t = [('ID','int'),('DEF','str')]
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')

誰かが簡単な説明をすることができますか?私はPython2.7を実行しています

4

2 に答える 2

14

(('a', 'b'))と同じ('a', 'b')です。

あなたは実際に欲しい(('a', 'b'),)

これはここに文書化されています:

5.13。式リスト

expression_list ::= expression ( "," expression )* [","]

少なくとも1つのコンマを含む式リストは、タプルを生成します。タプルの長さは、リスト内の式の数です。式は左から右に評価されます。

末尾のコンマは、単一のタプル(別名シングルトン)を作成するためにのみ必要です。それ以外の場合はオプションです。末尾にコンマがない単一の式はタプルを作成しませんが、その式の値を生成します。(空のタプルを作成するには、空の括弧のペアを使用します:())。

この制限がない場合、式(3) * (4)は2つの数値の乗算、または2つのタプルである必要があることを覚えておいてください。ほとんどのユーザーは、それが数値の乗算であることを期待します。

于 2012-09-19T14:05:03.490 に答える
4
t = [('ID','int')]

リスト内のタプルです。

t = (('ID','int'))

角かっこで囲まれたタプルです。

t = ('ID','int'),

タプル内のタプルです。

,タプルになります!タプルを囲む角かっこは、あいまいさを避けるためにのみ必要です。

于 2012-09-19T14:07:12.463 に答える