0

我有一个看起来像这样的列表。我想知道是否有任何快速的方法可以从中创建子列表?

list = [1,2,3,4,5,6,7,8,.....]

python中将列表拆分为该子列表的最佳方法是什么?

1. [(1, 2), (3, 4), (5, 6), ...]
2. [(1, 2, 3), (4, 5, 6), ...]
3. [(1,2,3,4),(5,6,7,8), ....]
4

2 回答 2

5

你可以很容易地实现这一点,方法是循环遍历列表,步长等于你想要在每个子列表中的元素数量(例如range(0, len(a), n))。您可以使用索引提取每个子列表所需的元素(例如a[i:i+n])。例如:

def group(a, n):
    return [tuple(a[i:i+n]) for i in range(0, len(a), n)]


print group([1, 2, 3, 4, 5, 6], 2)
# [(1, 2), (3, 4), (5, 6)]

print group([1, 2, 3, 4, 5, 6], 3)
# [(1, 2, 3), (4, 5, 6)]

print group([1, 2, 3, 4, 5, 6, 7, 8], 4)
# [(1, 2, 3, 4), (5, 6, 7, 8)]
于 2013-07-03T03:04:57.570 回答
0

尝试numpy.reshape

>>> import numpy
>>> a = range(1,7)
>>> a
[1, 2, 3, 4, 5, 6]
>>> numpy.reshape(a,(3,2))
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> numpy.reshape(a,(2,3))
array([[1, 2, 3],
       [4, 5, 6]])

reshape接受一个“类似数组”的对象和一个包含新矩阵的行数和列数的元组。

于 2013-07-03T03:00:33.887 回答