1

リストの形を変える簡単な方法(できれば1行)

[1,2,3,4,5,6,7,8,9,10,"prime"]

の中へ

[[1,2],[3,4],[5,6],[7,8],[9,10],["prime"]]

また

[[1,2,3],[4,5,6],[7,8,9],[10,"prime"]]

また

[[1,2,3,4],[5,6,7,8],[9,10,"prime"]]

..。

さまざまなパラメーター(上記の例では2、3、4)を渡します。

リストの長さは2、3、4で割り切れないため、numpy.reshapeはそれを行うことができません。

4

3 に答える 3

5
>>> l = [1,2,3,4,5,6,7,8,9,10,"prime"]
>>> [l[i:i+2] for i in xrange(0, len(l), 2)]
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], ['prime']]
>>> [l[i:i+3] for i in xrange(0, len(l), 3)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 'prime']]
>>> [l[i:i+4] for i in xrange(0, len(l), 4)]
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 'prime']]
于 2012-04-20T09:52:48.997 に答える
0

Pythonのドキュメントから引用した、反復可能なもので機能する答え:

Python 3の場合:

from itertools import zip_longest

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

Python 2.xの場合:

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
于 2012-04-20T10:08:16.737 に答える
0

または、numpy.splitを使用できます。

data = np.array([1,2,3,4,5,6,7,8,9,10,"prime"], dtype=np.object)
np.split(data, np.r_[:len(data):3][1:])
于 2012-04-20T13:33:40.270 に答える