シングルトン タプルの謎とその文字列変換
単一の要素を含むタプルを作成するとき、そのタプルが保持されることを期待するかもしれません。自然。ただし、Python では独特の動作が発生します。
問題:
次のコードを考えてみましょう:
a = [('a'), ('b'), ('c', 'd')]
驚くべきことに、印刷すると、 a の各要素の型を取得すると、次のようになります。出力:
['a', 'b', ('c', 'd')] <type 'str'> <type 'str'> <type 'tuple'>
最初の 2 つの要素は、かっこで囲まれているにもかかわらず、タプルではなく文字列として動作するのはなぜですか?
答え:
鍵となるのは、タプルの Python 構文を理解することです。かっこだけでは、単一の要素を含むタプルは作成されません。これを行うには、要素の後にカンマを追加する必要があります。この区別を以下に示します。
type(('a')) # A string type(('a',)) # A tuple
コード例を修正するには、単一要素文字列の後にカンマを追加します。
a = [('a',), ('b',), ('c', 'd')]
理由:
Python のドキュメントによると、空のタプルと単一の項目を持つタプルは一意の構文の要件。空のタプルは空のかっこのペアで作成されますが、単一項目のタプルには値の後にカンマが必要です。
回避策:
末尾のカンマが見た目に不快な場合は、リストをタプル() 関数:
x = tuple(['a'])
以上がPython が `('a')` をタプルではなく文字列として扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。