Python で整数があるとします。たとえば、100 です。
この整数を、この整数まで数えられるリストに変換したいと思います。例: [1,2,3,... 100]
これを行う最も効率的な方法は何ですか?
(なぜ私がこれをしたいのか疑問に思っている場合は、私が使用したい Django Paginate ライブラリがリストを必要とするためです。これを行わずに Paginate を使用するよりエレガントな方法があれば、私に知らせてください)。
Python で整数があるとします。たとえば、100 です。
この整数を、この整数まで数えられるリストに変換したいと思います。例: [1,2,3,... 100]
これを行う最も効率的な方法は何ですか?
(なぜ私がこれをしたいのか疑問に思っている場合は、私が使用したい Django Paginate ライブラリがリストを必要とするためです。これを行わずに Paginate を使用するよりエレガントな方法があれば、私に知らせてください)。
Pythonrange()
ビルトインはまさにあなたが望むことを行います。例えば:
range(1, 101)
は、コンピューター サイエンスでは通常のようにrange()
からカウントされるため、 を渡す必要があることに注意してください。指定された値までカウントされます。したがって、一般的には、から までカウントします。0
1
101
100
range(1, n+1)
1
n
また、3.x では、これはリストではなくイテレータを生成することに注意してください。したがって、リストが必要な場合は、list()
への呼び出しを単純にラップできますrange()
。とはいえ、ほとんどの場合、リストではなくイテレータを使用できます (イテレータは遅延計算できるため、大きな利点があります)。その場合、リストを作成する必要はありません (2.x では機能3.x の範囲のようなものは、 で実現できますxrange()
。
Lattyware によって提供された解決策は、リストを生成するのに正しいですが、Django のページネーションを使用している場合は、単に使用できますpaginator_instance.page_range
https://docs.djangoproject.com/en/dev/topics/pagination/#django.core.paginator.Paginator.page_range
range または xrange を使用できます。xrange の方が高速ですが、反復子を返します。
>>>range(1,101)
[1, 2, 3, ... , 99, 100]
>>> xrange(1,101)
xrange(1, 101)
>>>list(xrange(1,101))
[1, 2, 3, ... , 99, 100]