我有一个list
例如:
L = [1,2,3,4,5,6,7,8]
假设我想将其L
分为 3 个部分,例如:
result = [[1,2,3],[4,5,6],[7,8]]
如果不使用更高的编程方法(仅使用简单的 Python 方法),我怎么能做到这一点?
我有一个list
例如:
L = [1,2,3,4,5,6,7,8]
假设我想将其L
分为 3 个部分,例如:
result = [[1,2,3],[4,5,6],[7,8]]
如果不使用更高的编程方法(仅使用简单的 Python 方法),我怎么能做到这一点?
您可以尝试以下方法:
In [13]: l = [1,2,3,4,5,6,7,8]
In [14]: result = [l[i:i+3] for i in xrange(0, len(l), 3)]
In [15]: result
Out[15]: [[1, 2, 3], [4, 5, 6], [7, 8]]
这会从列表中拉出长度为 的切片n
,其中n
是您添加的数字,i
也是您的range
. 正如@Eric 指出的那样,这将列表分成三个块,但不是三个块。为了将其分成三个块,您可以执行以下操作:
In [21]: l = [1,2,3,4,5,6,7,8]
In [22]: chunk = int(round(len(l)/3.0))
In [23]: result = [l[i:i+chunk] for i in range(0,len(l),chunk)]
In [24]: result
Out[24]: [[1, 2, 3], [4, 5, 6], [7, 8]]
In [25]: l = [1,2,3,4,5]
In [26]: chunk = int(round(len(l)/3.0))
In [27]: result = [l[i:i+chunk] for i in range(0,len(l),chunk)]
In [28]: result
Out[28]: [[1, 2], [3, 4], [5]]
听起来你有一定的限制,这也可以写在一个for
循环中(尽管这实际上比上面的有更多的函数调用:)):
In [17]: result = []
In [18]: for i in xrange(0, len(l), 3):
....: result.append(l[i:i+3])
....:
....:
In [19]: result
Out[19]: [[1, 2, 3], [4, 5, 6], [7, 8]]
RocketDonkey的回答应该没问题。这是一个没有列表理解的:
l = [1,2,3,4,5,6,7,8]
result = {}
idx = 0
for i in l:
group = idx/3
if group not in result:
result[group] = []
result[group].append(i)
idx += 1
result.values()
>>> [[1, 2, 3], [4, 5, 6], [7, 8]]
enumerate()
可用于删除手动 idx 增量。