タプルはPythonでは非可変データ型なので、タプルの包含は問題ではありません。なぜ、角括弧の代わりに円括弧でリスト内包がうまく動作し、正規のタプルを生成するのですか?なぜ新しい要素をTUPLEに追加すると機能するのですか?
タプルではないリストを定義するために丸括弧が使われていると思いました(私はそこに間違っているとは思いません)。
私の理解では、既に定義されているタプルに値を追加しています。タプルを更新することができます。タプルは変更不可能なので、(Pythonで)起こらないと思います。
私には何の誤りもありません、誰かがこれに合理的な説明があることを教えてください。
これは私のコードです:
ignore = (r"^\@define\s")
x = tuple()
(x.append(True if re.search(regex, line) else False) for regex in ignore)
if True in x:
print("How is this possible?")
それは生成者の理解であり、タプルの理解ではありません。これは、リストの理解によって生成された熱心なシーケンスではなく、レイジーシーケンスを生成します。 –
@PaulRooney 'x.append()'を実行していて、 'x'が' tuple() 'として定義されている場合は、必ず' tuple() 'で' append() 'を実行するべきではありません。 。 –
右、ジェネレータ*式*は評価されないので、エラーは発生しません。さて、あなたは、理解の構造の中でミューテータ法を使うことは決してありません。それは機能的な構造と状態の変化を混ぜることです。それは悪い形です。 –