rangeとxrange
サンプルコードで「for」とセットでよく使用されるrangeの紹介です。決まった回数の繰り返し処理を行うのに適しており、指定した引数に応じたリストが戻り値となります。
引数に「10」を指定している下記サンプルでは、[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] という要素のリストが戻り値となり、10回ループするfor文を実現しています。
# -*- coding: utf-8 -*-
for i in range(10):
print i
--実行結果--
0 1 2 3 4 5 6 7 8 9
引数を2つ渡す下記のようなケースでは、(2, 3, 4, 5, 6, 7, 8, 9) というように「2」から始まり「9」(10の一つ前)まで、というリストが返されます。
# -*- coding: utf-8 -*-
for i in range(2,10):
print i
--実行結果--
2 3 4 5 6 7 8 9
引数には負の値を渡すことも可能です。
# -*- coding: utf-8 -*-
for i in range(-2,10):
print i
--実行結果--
-2 -1 0 1 2 3 4 5 6 7 8 9
Pythonでは次のような「xrange」も用意されています。実行結果としてはrangeと変わりません。
# -*- coding: utf-8 -*-
for i in xrange(10):
print i
--実行結果--
0 1 2 3 4 5 6 7 8 9何が異なるのかというと、大きな数を指定した時のメモリの効率です。 rangeは引数で「10」を指定した場合、先に述べたように要素を10個持つリストが作られます。これは繰り返し処理を行う前に確保されます(あらかじめ全て用意する)。 これに対してxrangeは「その都度」必要な値を生成します。小さな要素数の場合はあまり変わりませんが、仮に「10」ではなく「10000000(1千万)」であった場合はどうでしょうか。 一息に1千万もの要素をもつリストが作られることと、その都度必要な分だけ値を生成するのではまったく効率が異なります。なお3系の最新バージョンではxrangeはありません。rangeがxrangeに近い形へ実装し直されたため、撤廃になりました。
文字列を出力するprint文!色々な使い方を学んでおきましょう!
▶基礎編:print文
