502

入力した 2 つの値の間の値を含むリストを作成するにはどうすればよいですか? たとえば、次のリストは 11 から 16 までの値に対して生成されます。

list = [11, 12, 13, 14, 15, 16]
4

12 に答える 12

893

を使用しrangeます。Python 2.x ではリストを返すので、必要なのは次のとおりです。

>>> range(11, 17)
[11, 12, 13, 14, 15, 16]

Python 3.x ではrangeイテレータです。したがって、それをリストに変換する必要があります。

>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]

: 2 番目の番号は排他的です。16+1したがって、ここでは=である必要があります17

編集:

によるインクリメントに関する質問に答えるには、おそらくnumpy のand0.5を使用するのが最も簡単なオプションです。 arange().tolist()

>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()

[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
 14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
于 2013-08-16T04:47:21.710 に答える
39

あなたは探しているようですrange()

>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]

0.5の代わりにインクリメントするには、次の1ように言います。

>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
于 2013-08-16T04:46:44.027 に答える
12

試す:

range(x1, x2+1)  

これは Python 2.x のリストであり、ほとんど Python 3.x のリストのように動作します。Python 3 を実行していて、変更可能なリストが必要な場合は、次を使用します。

list(range(x1, x2+1))
于 2013-08-16T04:49:50.580 に答える
6

Python でリスト内包表記を使用します。リストにも 16 が必要なので、x2+1 を使用します。範囲関数は、関数の上限を除外します。

list=[x for x in range(x1, x2+1)]
于 2013-08-16T04:46:59.800 に答える
6

float 型で機能する範囲のような関数を探している場合は、非常に良い記事です。

def frange(start, stop, step=1.0):
    ''' "range()" like function which accept float type''' 
    i = start
    while i < stop:
        yield i
        i += step
# Generate one element at a time.
# Preferred when you don't need all generated elements at the same time. 
# This will save memory.
for i in frange(1.0, 2.0, 0.5):
    print i   # Use generated element.
# Generate all elements at once.
# Preferred when generated list ought to be small.
print list(frange(1.0, 10.0, 0.5))    

出力:

1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
于 2016-03-15T03:21:36.027 に答える
6

xからyまでの範囲を持ちたいと仮定します

range(x,y+1)

>>> range(11,17)
[11, 12, 13, 14, 15, 16]
>>>

3.x サポートの使用リスト

于 2013-08-16T04:47:58.733 に答える
0

私の場合、@ YTZの答えはうまくいきました。0.01 のステップで 0 から 10000 までのリストを生成する必要があり、各反復で単純に 0.01 を追加しても、丸めの問題により機能しませんでした。

したがって、@YTZ のアドバイスを使用して、次の関数を作成しました。

import numpy as np


def generate_floating_numbers_in_range(start: int, end: int, step: float):
    """
    Generate a list of floating numbers within a specified range.

    :param start: range start
    :param end: range end
    :param step: range step
    :return:
    """
    numbers = np.linspace(start, end,(end-start)*int(1/step)+1).tolist()
    return [round(num, 2) for num in numbers]
于 2021-10-01T13:13:58.930 に答える