Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python入門】del演算子でタプルを削除する方法と注意点

タプルはイミュータブル(変更不可)なデータ構造のため、個々の要素だけを取り除くことはできません。ただし、リスト内包表記やスライシングを活用すれば、不要な要素を除外した新しいタプルを作り直すことは可能です。

一方、タプルそのものを明示的に完全に削除したい場合は、del 文を使用します。

タプル全体を削除するサンプルコード

tup = ('physics', 'chemistry', 1997, 2000)
print(tup)
del(tup)
print("After deleting tup : ")
print(tup)

このコードを実行すると、次のような出力が得られます。NameError という例外が発生している点に注目してください。

実行結果

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
    File "test.py", line 9, in <module>
        print tup;
NameError: name 'tup' is not defined

なぜエラーが発生するのか

del tup を実行した時点で、変数 tup とそれが参照していたタプルオブジェクトはメモリ上から完全に削除されます。そのため、削除後に tup へアクセスしようとすると、「名前が定義されていない」ことを示す NameError が発生するのです。

ポイントまとめ

  • タプルの要素は個別に削除できない(イミュータブルなため)
  • 特定の要素を除いたタプルが必要なら、スライスやリスト内包表記で新しいタプルを生成する
  • タプル全体を消去したい場合は del 文を使う
  • del 実行後の変数へのアクセスは NameError を引き起こすので注意
  1. Pythonの正規表現における\B(非単語境界)の動作を解説

    Pythonの正規表現における \B の意味とは?正規表現の \b は「単語境界」を表すメタ文字で、片側が単語構成文字(通常は英字・数字・アンダースコア)であるような位置にマッチします。一方、今回解説する \B はその逆で、「\b がマッチしないすべての位置」、つまり単語境界ではない位置にマッチします。\B の動作を確認するサンプルコード以下のコードは、re.findall() を使って正規表現 \Bcat がどのように動作するかを示したものです。import re result = re.findall(r\Bcat, certificate) result2 = re.findall(r

  2. Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説

    Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2