Python 将长列表拆分为较短的常规列表

Python 将长列表拆分为较短的常规列表,python,Python,我有一个很长的列表,我想把它分成几个较短的列表。我正在使用列表理解,但它似乎有点长和不雅。有更好的办法吗 # z is a list z = range(99) ## zz should slice z into short lists with three members ## using list comprehension I get this zz = [ z[i : i+3] for i,x in enumerate(z) if i%3 == 0 ] # seems a bit

我有一个很长的列表,我想把它分成几个较短的列表。我正在使用列表理解,但它似乎有点长和不雅。有更好的办法吗

# z is a list
z = range(99)

##  zz should slice z into short lists with three members
##  using list comprehension I get this
zz = [ z[i : i+3] for i,x in enumerate(z) if i%3 == 0 ]

# seems a bit verbose. is there a cleaner way?

itertools
(这是一种常见的工具):

例如:

>>> list(grouper(range(100), 3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11), (12, 13, 14), (15, 16, 17), (18, 19, 20), (21, 22, 23), (24, 25, 26), (27, 28, 29), (30, 31, 32), (33, 34, 35), (36, 37, 38), (39, 40, 41), (42, 43, 44), (45, 46, 47), (48, 49, 50), (51, 52, 53), (54, 55, 56), (57, 58, 59), (60, 61, 62), (63, 64, 65), (66, 67, 68), (69, 70, 71), (72, 73, 74), (75, 76, 77), (78, 79, 80), (81, 82, 83), (84, 85, 86), (87, 88, 89), (90, 91, 92), (93, 94, 95), (96, 97, 98), (99, None, None)]

你能详细说明一下你用什么标准来把长名单分成短名单吗?+1该死的,我的速度太慢了29秒@斯威尼罗的时间是宝贵的!:)您可能需要这样做:
映射(列表,石斑鱼(范围(100),3))
。这将给OP带来他想要的结果。
>>> list(grouper(range(100), 3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11), (12, 13, 14), (15, 16, 17), (18, 19, 20), (21, 22, 23), (24, 25, 26), (27, 28, 29), (30, 31, 32), (33, 34, 35), (36, 37, 38), (39, 40, 41), (42, 43, 44), (45, 46, 47), (48, 49, 50), (51, 52, 53), (54, 55, 56), (57, 58, 59), (60, 61, 62), (63, 64, 65), (66, 67, 68), (69, 70, 71), (72, 73, 74), (75, 76, 77), (78, 79, 80), (81, 82, 83), (84, 85, 86), (87, 88, 89), (90, 91, 92), (93, 94, 95), (96, 97, 98), (99, None, None)]