0

リストを均等なサイズではない小さな間隔に分割し、各間隔の理想的な初期値と最終値を得るにはどうすればよいですか?

16383 個のアイテムのリストがあります。また、各間隔が終了し、次の値が入力される値の別のリストもあります。

指定された間隔を使用して、値に応じて、各要素をそれが属するパーティションに割り当てる必要があります。

私はものを読んでみましたが、元のリストが与えられた場合にのみ遭遇し、人々はそれを均等なサイズのパーティションに分割しました...

ありがとう

ブレーズ

4

5 に答える 5

2

私があなたを理解するなら、あなたはそのようなものが必要です

>>> a = range(20)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> i = [[1, 5], [5, 8], [8, 20]]
>>> [a[x:y] for x, y in i]
[[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]

または、Jon Clementsがコメントで提案したように:

>>> [a[slice(*s)] for s in i]
[[1, 2, 3, 4], [5, 6, 7], [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]
于 2013-07-29T13:35:51.883 に答える
0
  1. 制限リストの範囲ごとに、空のリストに加えて、リストの最大値とそのリストの最小値を持つタプルとして、オーバーフロー値の 1 つを作成します。最後のリストには、なしの最大値があります。
  2. 値リストの各値について、値が > min かつ < max である、または max が None であるものが見つかるまで、タプルを実行します。
  3. 適切なリストが見つかったら、それに値を追加して次のリストに進みます。
于 2013-07-30T05:15:01.443 に答える
0

スライスは引き続き使用できます。

>>> c = [0,3,5,10]
>>> l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]    
>>> [l[c[i]:c[i+1]] for i in range(len(c)-1)]
[[0, 1, 2], [3, 4], [5, 6, 7, 8, 9]]
于 2013-07-29T13:35:54.330 に答える