以下の例では、すべての要素がタプルであると想定していますが、タプルに1つの文字列しか含まれていないのに、なぜタプルが文字列に変換されるのでしょうか。
>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>>
>>> for elem in a:
... print type(elem)
...
<type 'str'>
<type 'str'>
<type 'tuple'>
以下の例では、すべての要素がタプルであると想定していますが、タプルに1つの文字列しか含まれていないのに、なぜタプルが文字列に変換されるのでしょうか。
>>> a = [('a'), ('b'), ('c', 'd')]
>>> a
['a', 'b', ('c', 'd')]
>>>
>>> for elem in a:
... print type(elem)
...
<type 'str'>
<type 'str'>
<type 'tuple'>
単一の文字列しか含まれていないのに、タプルが文字列に変換されるのはなぜですか?
a = [('a'), ('b'), ('c', 'd')]
最初の 2 つの要素はタプルではないためです。それらは単なる文字列です。括弧によって自動的にタプルになるわけではありません。文字列の後にコンマを追加して、それがタプルであることを Python に示す必要があります。
>>> type( ('a') )
<type 'str'>
>>> type( ('a',) )
<type 'tuple'>
サンプル コードを修正するには、ここにコンマを追加します。
>>> a = [('a',), ('b',), ('c', 'd')]
^ ^
特別な問題は、0 個または 1 個のアイテムを含むタプルの構築です。構文には、これらに対応するためのいくつかの特別な癖があります。空のタプルは、括弧の空のペアで構成されます。1 つの項目を持つタプルは、値の後にカンマを付けることによって作成されます (単一の値を括弧で囲むだけでは十分ではありません)。醜いが効果的。
末尾のコンマ構文が本当に嫌いな場合は、回避策として alist
をtuple()
関数に渡します。
x = tuple(['a'])
最初の 2 つの例はタプルではなく、文字列です。単一項目のタプルには、次のように末尾のコンマが必要です。
>>> a = [('a',), ('b',), ('c', 'd')]
>>> a
[('a',), ('b',), ('c', 'd')]
('a')
タプルではなく単なる文字列です。
python
それらを次のように解釈するには、最後に余分なコンマを追加する必要がありますtuple
: -
>>> a = [('a',), ('b',), ('c', 'd')]
>>> a
[('a',), ('b',), ('c', 'd')]
>>>