首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用不是列表长度的整除因子的形状进行整形

使用不是列表长度的整除因子的形状进行整形
EN

Stack Overflow用户
提问于 2012-04-20 17:50:13
回答 3查看 553关注 0票数 1

我会用一种简单的方法(最好是一行)来重塑列表

代码语言:javascript
复制
[1,2,3,4,5,6,7,8,9,10,"prime"]

转到

代码语言:javascript
复制
[[1,2],[3,4],[5,6],[7,8],[9,10],["prime"]]

代码语言:javascript
复制
[[1,2,3],[4,5,6],[7,8,9],[10,"prime"]]

代码语言:javascript
复制
[[1,2,3,4],[5,6,7,8],[9,10,"prime"]]

..。

因为我传递了不同的参数(上面的例子是2,3,4)。

numpy.reshape不能这样做,因为列表的长度不能被2,3,4整除。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-20 17:52:49

代码语言:javascript
复制
>>> 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']]
票数 5
EN

Stack Overflow用户

发布于 2012-04-20 18:08:17

取自Python docs,一个适用于任何迭代器的答案:

在Python 3中:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2012-04-20 21:33:40

或者,您可以使用numpy.split:

代码语言:javascript
复制
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:])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10243878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档