ホームページ > バックエンド開発 > Python チュートリアル > Python が `('a')` をタプルではなく文字列として扱うのはなぜですか?

Python が `('a')` をタプルではなく文字列として扱うのはなぜですか?

DDD
リリース: 2024-12-17 11:33:24
オリジナル
399 人が閲覧しました

Why Does Python Treat `('a')` as a String, Not a Tuple?

シングルトン タプルの謎とその文字列変換

単一の要素を含むタプルを作成するとき、そのタプルが保持されることを期待するかもしれません。自然。ただし、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート