#【Python】変数前方のアスタリスクの役割。入力値を分割
下記のような表記で実行されていることの確認。
a,*b = [1,2,3,4,5]
▼処理内容
一番最初の要素をaに代入。
それ以降をbに代入。
a,*b = [1,2,3,4,5]
print(a)
print(b)
#出力
1
[2,3,4,5]
**▼基本の確認** 変数を要素分用意すると、一つ一つ格納できる。
a,b,c=1,2,3
print(a)
print(b)
print(c)
#出力
1
2
3
▼要素の数と変数の数が合わないとエラー
a,b=1,2,3
print(a)
print(b)
#出力
too many values to unpack (expected 2)
▼アスタリスクを使うことで変数と要素の数を合わせる必要がなくなる
・最初や間にも使える。
a,*b,c,d=1,2,3,4,5,6,7,8,9
print(a)
print(b)
print(c)
print(d)
#出力
1
[2, 3, 4, 5, 6, 7]
8
9
*a,b,c,d=1,2,3,4,5,6,7,8,9
print(a)
print(b)
print(c)
print(d)
#出力
[1, 2, 3, 4, 5, 6]
7
8
9
##応用例
name, *line = input().split()
- 空白やTABを含んだ入力値を分割しlist化。
- 1つ目の要素をnameに代入
- 以降の要素をlineに代入
n = int(input())
#辞書型を定義
student_marks = {}
for _ in range(n):
#1つ目の要素はnameに。以降はlineに格納
name, *line = input().split()
#lineに格納された数値をfloatにしてlist型に
scores = list(map(float, line))
#キーをname,値をscoresとして辞書型に格納
student_marks[name] = scores
query_name = input()
#辞書型のfor文はkeyを取り出す。
for key in student_marks:
if key==query_name:
#平均を求める sum()/len()
ave = sum(student_marks[key])/len(student_marks[key])
#小数点2桁表示。f文字列を使用
print(f'{ave:.2f}')
f'文字列'
f'{変数}'
値:.nf → 小数n桁まで表示