operatorモジュールのitemgetter関数を使えば、イテラブル(リストやrangeオブジェクト等の順番に数えられるオブジェクト)から任意の要素を抜き出すことができます。
■サンプルスクリプト
itemgetter_demo.py
import sys from operator import itemgetter def get_pg(index): pg_list = ['Python', 'Ruby', 'R', 'JavaScipt', 'Go', 'PHP'] pg_name = itemgetter(index) return pg_name(pg_list) if __name__ == '__main__': index = int(sys.argv[1]) print(get_pg(index))
■実行結果
$ python itemgetter_demo.py 3 JavaScipt
複数の要素を一度に抽出する
itemgetter関数に複数のindex値を渡せば、イテラブルから複数の要素をタプルとして抜き出すことができます。
■サンプルスクリプト
multi_get.py
from operator import itemgetter pg_list = ['Python', 'Ruby', 'R', 'JavaScipt', 'Go', 'PHP'] pgs = itemgetter(1, 2, 5) result = pgs(pg_list) print(result) print(type(result))
■実行結果
$ python multi_get.py ('Ruby', 'R', 'PHP') <class 'tuple'>
参考文献
Fluent Python (オライリー) P.168