python 将字符串每隔 3 个值拆分一次,但拆分为嵌套格式

标签 python

我有一个这样的列表:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

我希望它看起来像这样

[['a', 'b', 'c'],['d', 'e', 'f'],['g', 'h', 'i']]

最有效的方法是什么?

编辑: 走另一条路怎么样?

[['a', 'b', 'c'],['d', 'e', 'f'],['g', 'h', 'i']]

-->

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

最佳答案

您可以通过简单的列表理解来做您想做的事。

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [a[i:i+3] for i in range(0, len(a), 3)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

如果你想填充最后一个子列表,你可以在列表理解之前这样做:

>>> padding = 0
>>> a += [padding]*(3-len(a)%3)

将这些组合成一个函数:

def group(sequence, group_length, padding=None):
    if padding is not None:
        sequence += [padding]*(group_length-len(sequence)%group_length)
    return [sequence[i:i+group_length] for i in range(0, len(sequence), group_length)]

换个方向:

def flatten(sequence):
    return [item for sublist in sequence for item in sublist]

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> flatten(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

关于python 将字符串每隔 3 个值拆分一次,但拆分为嵌套格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932552/

相关文章:

python - 等同于 Delphi 中的 Python DocTest?

python - 猴子修补从子方法调用的函数中的类 (Python)

python - OpenCV 保存图像显着增加了 .tif 文件的大小

python - 在 OSX 10.6 上为 Python 安装 MySQLdb - 创建 .egg 时出错

python - 如何使用户输入在 python 3 中不区分大小写?

python - 在Python中使用OpenCV库对图像进行阈值处理,并使用for循环使用不同的标志

python - 想要了解 Spark Streaming 的工作原理吗?

python - Django 选择字段

python - 在 Django DetailView 中获取表单

python - 如何在小于 numpy 数组维度的 bool 数组子集上索引 numpy 数组?