[Python] タプル | tuple

こんにちは、@yasuです。

今回は、タプル(tuple)の使い方を習得したいと思います。

実行環境はこちらです。
https://repl.it/

分かったこと。

  • 定義するとき、()で囲む 例(a,b,c)
  • 定義するとき、型の混合は可能 例("a",123,True)
  • データの追加や削除、更新はできないようです
  • 参照は可能[] 例[0]
  • 検索は可能(存在しないときは例外発生)
  • sample関数は、データの型が混在しても可能

コード

# ----------------------------------------
# タプル
# ----------------------------------------

# 代入方法1
menu=("ラーメン","餃子","ライス","ビール")
print(type(menu))
#<class 'tuple'>

#要素数 len
print(len(menu))
#4

print(menu)
#('ラーメン', '餃子', 'ライス', 'ビール')   

# 参照方法 []
# [0],[1],[2]
print(menu[0])
#ラーメン

try:
    print(menu[4])
except IndexError as identifier:
    print(identifier)
    #IndexError: tuple index out of range

#代入NG
try:
    menu[0]="五目焼きそば"
except TypeError as identifier:
    print(identifier)
    #TypeError: 'tuple' object does not support item assignment 

#検索(存在するときは、インデックスを返す)
index = menu.index("餃子")
print(index)
#1

#検索(存在しないときは、例外を返す)
try:
    index = menu.index("レバニラ炒め")
    print(index)
except ValueError as identifier:
    print(identifier)
    #ValueError: tuple.index(x): x not in tuple

# 有無判定 in
# あらかじめ有無判定が必要かも
print("レバニラ炒め" in menu)
#False

# ----------------------------------------
# 代入方法2
(name,price,oomori_umu)=("ラーメン",400,True)
print (name,price,oomori_umu)
#ラーメン 400 True

# ----------------------------------------
#代入方法3
print(tuple(range(5)))
#(0, 1, 2, 3, 4)

#例、5回ループ
for i in range(5):
    pass

# ----------------------------------------
# shuffle   NG 
# sample    OK
from random import shuffle,sample
numbers = tuple(range(5))

print(type(numbers))
#<class 'tuple'>

#混ぜるNG
try:
    shuffle(numbers)
    print(numbers)
except TypeError as identifier:
    print(identifier)
    #'tuple' object does not support item assignment

#n個から任意にm個を取得するOK
print(type(sample(numbers,3)))
#<class 'list'>
print(sample(numbers,3))
#[3, 2, 4]

# 型が混在しても可能
print(sample(("ラーメン",400,True),2))

# ----------------------------------------
#型変換
numbers = list(numbers)
print(numbers)
#[0, 1, 2, 3, 4]

出力結果

image.png

Sort:  

@yasu transfered 0.5 KRWP to @krwp.burn. voting percent : 5.38%, voting power : 65.36%, steem power : 1920286.67, STU KRW : 1200.
@yasu staking status : 250 KRWP
@yasu limit for KRWP voting service : 0.5 KRWP (rate : 0.002)
What you sent : 0.5 KRWP [47108120 - 111762eabb6bcba558b41b266f2211c468892206]

Coin Marketplace

STEEM 0.16
TRX 0.03
JST 0.027
BTC 13092.70
ETH 407.02
USDT 1.00
SBD 1.00