セットまたはリストが与えられた場合 (順序付けられていると仮定)
myset = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
範囲内にいくつの数字が現れるかを知りたいです。私の範囲が 10 だとします。次に、上記のリストを考えると、10 のセットが 2 つあります。
関数を返したい[10,10]
私の範囲が15だった場合。[15,5]
範囲が変わります。これが私が思いついたものです
myRange = 10
start = 1
current = start
next = current + myRange
count = 0
setTotal = []
for i in myset:
if i >= current and i < next :
count = count + 1
print str(i)+" in "+str(len(setTotal)+1)
else:
current = current + myRange
next = myRange + current
if next >= myset[-1]:
next = myset[-1]
setTotal.append(count)
count = 0
print setTotal
出力
1 in 1
2 in 1
3 in 1
4 in 1
5 in 1
6 in 1
7 in 1
8 in 1
9 in 1
10 in 1
12 in 2
13 in 2
14 in 2
15 in 2
16 in 2
17 in 2
18 in 2
19 in 2
[10, 8]
スキップされた 11 と 20 に注意してください。私もこの状態をいじって、有線の結果を得ました。
編集: 範囲は、範囲内のすべての値が 1 つのチャックにカウントされる範囲を定義します。
現在の値から現在の値+範囲までの範囲を1つのチャンクと考えてください。
編集:
必要な出力:
1 in 1
2 in 1
3 in 1
4 in 1
5 in 1
6 in 1
7 in 1
8 in 1
9 in 1
10 in 1
11 in 2
12 in 2
13 in 2
14 in 2
15 in 2
16 in 2
17 in 2
18 in 2
19 in 2
[10, 10]