【Python】hash関数の使い方と注意点を実例で解説。タプル(tuple)とは何か?

Python-prograshi(プロぐらし)-kv Python
記事内に広告が含まれていることがあります。

Pythonのデフォルト関数に、暗号化などで使用するハッシュ値を返すhash関数があります。

ここではhash関数の使い方についてまとめています。


hash関数の基本構文

hash(tuple)

引数にはタプル(tuple)型の数値や変数を入れる必要があります。
 ・整数を渡すと、元の数値が返ります。
 ・list(配列)を渡すとエラーになります。

▼実例

hash((2,4,5))

#出力
8794205387495702562


list型を渡した場合はエラーになる

hash([2,4,5])

#出力
TypeError: unhashable type: 'list'

数値を渡すと、数値がそのまま返る

hash(2)

#出力
2


ハッシュ関数の応用

ハッシュ関数を使うと、2つの数値を入力してハッシュ値を返すプログラムを作成することもできます。

if __name__ == '__main__':
    n = int(input())
    integer_list = map(int, input().split())
    t = tuple(integer_list)
    print(hash(t))



・input().split()
input()を実行してからsplit()を実行する。

▼input()が2回実行される

n = int(input())
integer_list = map(int, input().split())


タプル(tuple)とは何か?

hashの引数にはタプル型のデータを指定する必要がありますが、そもそもタプルとは何でしょうか?まとめると次のような特性を持ったデータです。

タプル(tuple)型のデータの特徴
  • 要素を追加したり、削除したりできない型。
  • イテラブルのためfor文で取り出せる。
  • 数値でも文字列でも可。
  • ( )で囲まれている。
  • ※イテラブルでないものはtupleにできない(intやfloatなど)

イテラブルとは、要素を一つ一つ取り出すことができるという意味です。

見た目や性質はlistと類似しています。ただし、追加・削除など要素をいじれない点などが大きく異なります。


タプルの作り方

タプルを作る方法は1つではありません。主に次の3つの方法が使えます。

タプル型のデータを作る方法
  • 複数の値を直接指定する(カンマでつなぐ)
  • ( )で囲む 
  • tupleメソッドで変換する:tuple()


複数の値を直接指定する

x=5,4.1

print(x)
print(type(x))

#出力
(5, 4.1)
<class 'tuple'>


( )で囲む 

x=(5,4)

print(x)
print(type(x))

#出力
(5, 4)
<class 'tuple'>


数値以外の文字列もタプル型にすることができます。

x="a","b"

print(x)
print(type(x))

#出力
('a', 'b')
<class 'tuple'>
x="a"

print(x)
print(type(x))

#出力
('a',)
<class 'tuple'>


tupleメソッドで変換する:tuple()

x=[1,2,3,4,5]
x=tuple(x)

print(x)
print(type(x))

#出力
(1, 2, 3, 4, 5)
<class 'tuple'>


※注意点

intやfloatなどイテラブルでない値はtupleにできないので注意が必要です。

x=(3)

print(x)
print(type(x))

#出力
TypeError: 'int' object is not iterable
x=3
x=tuple(x)

print(x)
print(type(x))

#出力
TypeError: 'int' object is not iterable
タイトルとURLをコピーしました