LoginSignup
11
9

More than 5 years have passed since last update.

[Python] iterableな要素をunpackするときに可変長引数が使える

Last updated at Posted at 2016-06-12

最近、python力向上のため某サイトでプログラミング問題を解きまくっている。
入力データのプリプロセスで可変長引数が使えることに気付いたのでメモ。

各問題の入力データは、例えば以下のような形式が標準入力から与えられる。

市区町村名 人口 面積 
shinjyuku 341009 18.22
・・・

1行に複数の型、特に先頭が文字列で、後続はすべて数値なパターン。

標準入力から読み取ったデータは文字列型として格納されるため、
数値データに関しては変換が必要となる。

>>> name, population, area = input().split(' ')
shinjyuku 341009 18.22
>>> name
'shinjyuku'
>>> population
'341009'
>>> area
'18.22'

こうすると、変数ごとに数値変換する必要があるため面倒になる。
なので、数値部分はまとめてリストに放り込みたい。

>>> name, data = input().split(' ')
shinjyuku 341009 18.22
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

unpackされた複数の値を単純に1つの変数dataに代入しようとすると、
変数が足りないと怒られる。そこで可変長引数を使う。

>>> name, *data = input().split(' ')
shinjyuku 341009 18.22
>>> name
'shinjyuku'
>>> data
['341009', '18.22']

メソッド引数の話でよく見聞きする可変長引数ですが、こんな使い方もあるんですね。
ただ、この場合「可変長引数」っていう呼ぶのに違和感あるなぁ。

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9