python數列分段 按範圍分段的Python陣列

2021-10-21 05:49:22 字數 872 閱讀 1563

首先,定義你的「極」數

第二,根據這些「極」數生成間隔

第三,定義盡可能多的列表。在

然後,對於每個間隔,掃瞄列表並在相關列表中新增屬於該間隔的項

**:source = [1, 4, 7, 9, 2, 10, 5, 8]

poles = (0,3,6,25)

intervals = [(poles[i],poles[i+1]) for i in range(len(poles)-1)]

# will generate: intervals = [(0,3),(3,6),(6,25)]

output = [list() for _ in range(len(intervals))]

for out,(start,stop) in zip(output,intervals):

for s in source:

if start <= s

print(output)

結果:^$

此解決方案的優點是通過新增更多的「極」數來適應3個以上的列表/間隔。在

然後使用bisect生成切**列表,它返回所提供數字的插入位置(左&右)

像這樣:import bisect

source = sorted([1, 4, 7, 9, 2, 10, 5, 8])

poles = (0,3,6,25)

output = [source[bisect.bisect_left(source,poles[i]):bisect.bisect_right(source,poles[i+1])] for i in range(len(poles)-1)]

print(output)

結果:[[1, 2], [4, 5], [7, 8, 9, 10]]

201509 1 數列分段 (python

問題描述 給定乙個整數數列,數列中連續相同的最長整數序列算成一段,問數列中共有多少段?輸入格式 輸入的第一行包含乙個整數n,表示數列中整數的個數。第二行包含n個整數a1,a2,an,表示給定的數列,相鄰的整數之間用乙個空格分隔。輸出格式 輸出乙個整數,表示給定的數列有多個段。樣例輸入 88 8 8 ...

數列分段2

目描述 對於給定的乙個長度為n的正整數數列a i 現要將其分成m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列4 2 4 5 1要分成3段 將其如下分段 4 2 4 5 1 第一段和為6,第2段和為9,第3段和為1,和最大值為9。將其如下分段 4 2 4 5 1 第一...

數列分段 Section II

對於給定的乙個長度為n的正整數數列 a i 現要將其分成 m m n 段,並要求每段連續,且每段和的最大值最小。關於最大值最小 例如一數列 4 2 4 5 1 要分成 3 段 將其如下分段 42 45 1 第一段和為 6 第 2 段和為 9 第 3 段和為 1 和最大值為 9 將其如下分段 4 24...