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
を使用しました- コースで使用されるコーディングツール
Tuple
関数は、反復可能でなければならない引数を1つだけ取ります
Tuple([iterable])
アイテムがiterableのアイテムと同じ順序で同じタプルを返します。
3,4
(リスト)または[3,4]
(タプル)を使用して、(3,4)
を反復可能にしてみてください
例えば
a_list.append(Tuple((3, 4)))
動作します
Tuple(3, 4)
はタプルを作成するための正しい構文ではないためです。正しい構文は-
Tuple([3, 4])
または
(3, 4)
ここから見ることができます- https://docs.python.org/2/library/functions.html#Tuple
違いはないはずですが、Tupleメソッドは間違っています。試してください:
a_list.append(Tuple([3, 4]))
append
とは関係ありません。 Tuple(3, 4)
単独でそのエラーが発生します。
その理由は、エラーメッセージが示すように、Tuple
には反復可能な引数が必要だからです。 singleオブジェクトのcontentsのTupleを作成するには、その単一のオブジェクトをTupleに渡します。別々の引数として渡すことで、2つのもののTupleを作成することはできません。
最初の例のように、(3, 4)
を実行してTupleを作成します。 Tupleを記述するためにその単純な構文を使用しない理由はありません。
Tuple()
はリストを引数として取ると信じています。たとえば、
Tuple([1,2,3]) # returns (1,2,3)
括弧で配列をラップするとどうなるかを見てください