[編集]これがコードレビューに適しているかどうかはわかりません。もしそうなら、移行してください:)ありがとう!
それで、私たちはここに座って、半学術的な問題に取り組んでいました。
、、を指定するとstart
、範囲タプルのリストが生成され、次のようになります。stop
step
gen_range(100, 140, 10)
を生成します
[(100, 110), (110, 120), (120, 130), (130, 140)]
また、それが機能するはずであるという事実を考えると、たとえば、100のステップで500Mの整数を反復し、永遠にかかることはありません。
私が思いついた実装は次のとおりです。
def gen_range(start, stop, step):
llist = range(start, stop+step, step)
batch_list = []
if llist[-1] > stop:
llist[-1] = stop
for a, b in enumerate(llist[:-1]):
batch_list.append((llist[a], llist[a+1]))
print batch_list
gen_range(100000000,600000000,100)
しかし、私はそれがより効率的な(コード長に関しても)方法で実行できると考えるのをやめることはできません。助言がありますか?
[編集]
私が指摘するのを忘れた一つのこと。範囲の境界がステップと等しくない場合、つまり次の場合があります。
gen_range(100, 143, 10)
range()
内部のために、ここでいくつかの答えが生成されるように、上限は150ではなく143である必要があります。