web-dev-qa-db-ja.com

タプルをリストに追加する-2つの方法の違いは何ですか?

4か月前に初めて「Hello World」を書きました。それ以来、ライス大学が提供するCoursera Pythonコースをフォローしています。私は最近、タプルとリストを含むミニプロジェクトに取り組みました。リストにタプルを追加することについて奇妙なことがあります:

a_list = []
a_list.append((1, 2))       # Succeed! Tuple (1, 2) is appended to a_list
a_list.append(Tuple(3, 4))  # Error message: ValueError: expecting Array or iterable

私にとっては非常に混乱しています。単純な「(...)」ではなく「Tuple(...)」を使用して追加するタプルを指定すると、ValueErrorが発生するのはなぜですか?

ところで:私はCodeSkulptorを使用しました- コースで使用されるコーディングツール

33
Skywalker326

Tuple 関数は、反復可能でなければならない引数を1つだけ取ります

Tuple([iterable])

アイテムがiterableのアイテムと同じ順序で同じタプルを返します。

3,4(リスト)または[3,4](タプル)を使用して、(3,4)を反復可能にしてみてください

例えば

a_list.append(Tuple((3, 4)))

動作します

47
Bhargav Rao

Tuple(3, 4)はタプルを作成するための正しい構文ではないためです。正しい構文は-

Tuple([3, 4])

または

(3, 4)

ここから見ることができます- https://docs.python.org/2/library/functions.html#Tuple

10
brainless coder

違いはないはずですが、Tupleメソッドは間違っています。試してください:

a_list.append(Tuple([3, 4]))
1
101

appendとは関係ありません。 Tuple(3, 4)単独でそのエラーが発生します。

その理由は、エラーメッセージが示すように、Tupleには反復可能な引数が必要だからです。 singleオブジェクトのcontentsのTupleを作成するには、その単一のオブジェクトをTupleに渡します。別々の引数として渡すことで、2つのもののTupleを作成することはできません。

最初の例のように、(3, 4)を実行してTupleを作成します。 Tupleを記述するためにその単純な構文を使用しない理由はありません。

1
BrenBarn

Tuple()はリストを引数として取ると信じています。たとえば、

Tuple([1,2,3]) # returns (1,2,3)

括弧で配列をラップするとどうなるかを見てください

1
Ashwin Reddy