python - 创建子列表 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。
解决方案
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']]
推荐阅读
- angular - 如何防止:ngFor 在任何点击事件上重新渲染
- python - 如何在 Python 中求解非线性阶乘方程组
- django - Django弹性搜索消耗大量内存
- amazon-web-services - 通过cloudformation模板创建lambda函数时SourceArn是什么
- python - 无法在我的 python 3 环境中运行 bcrpyt 或 werkzeug
- sql-server - 我可以在创建过程语句之前添加注释吗?
- python - what's the difference between iterator and array?
- android - How to get a callback from Android system to the app?
- ios - What's the hotkey for selecting code enclosed by parenthesis in Xcode?
- r - 如何制作一个闪亮的重置按钮来重置输入值然后更新数据?