首页 > 解决方案 > 创建子列表 Python3

问题描述

说,我有这个清单: ['1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '1', '0']

我的预期输出: [['1', '1', '0', '1'], ['1', '1', '0', '0'], ['0', '0', '1', '0']]

我通过这种方式得到了预期的输出:

from collections import deque as de
a = '110111000010'
a = list(a)
que = de(a)
a = []
l = []
n = 0
while que:
    item = que.popleft()
    l.append(item)
    n += 1
    if n == 4:
        a.append(l)
        n = 0
        l = []
print(a)

我想知道是否有一种更有效、更简单的方法来实现这一点,它可以被描述为优雅、易于理解且最重要的是 pythonic。

标签: pythonpython-3.xlist

解决方案


def  func(arr, size):
    l = []
    for i in range(0, len(arr), size):
        l.append(arr[i:i+size])
    return l

arr = ['1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '1', '0']
n = 4

sol = func(arr, n)
print(sol)

输出

[['1', '1', '0', '1'], ['1', '1', '0', '0'], ['0', '0', '1', '0']]

推荐阅读