python-3.x - 将列表拆分为特定值的多个列表

标签 python-3.x list split

我有一个内部由 0 分隔的元素列表。 格式是这样的:

[0, 2, 2, 0, 1, 5, 5, 3, 1, 3, 0, 7, 4, 6, 7, 4, 6]

我想使用零作为分隔符并将其拆分为子列表。在那个例子中:

[[], [2, 2], [1, 5, 5, 3, 1, 3], [7, 4, 6, 7, 4, 6]]

因此,零将消失。 前导零或结尾零应在开头或结尾形成一个空列表。

直到知道,我通过将列表连接到一个字符串,然后拆分它并再次制作一个列表来以一种丑陋的方式做到这一点。

是否有一种奇特的 pythonic 方法可以更轻松地做到这一点?

最佳答案

您可以使用 groupby 方法:

from itertools import groupby
k = [0, 2, 2, 0, 1, 5, 5, 3, 1, 3, 0, 7, 4, 6, 7, 4, 6]

gr = groupby(k, lambda a: a==0)

l = [[] if a else [*b] for a,b in gr]

print(l)

输出:

[[], [2, 2], [], [1, 5, 5, 3, 1, 3], [], [7, 4, 6, 7, 4, 6]]

您可以通过以下方式修复内部 []:

l = [ a for idx,a in enumerate(l) if idx in (0,len(l)) or a]

得到

[[], [2, 2], [1, 5, 5, 3, 1, 3], [7, 4, 6, 7, 4, 6]]

您可以将列表 comp 替换为

l = []
for a,b in gr:
    if a: 
        l.append([])
    else: 
        l.append([*b])

关于python-3.x - 将列表拆分为特定值的多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71007348/

相关文章:

python - Pymongo 游标迭代的替代方案

python - 在两个文件夹中查找名称首字母相同的文件

list - 将两个列表 ["String",Float] 合并到新列表 ["String",Float,Float]

python - 访问拆分列表中的某些单词

string - 拆分由给定对象类型分隔的字符串

python - 声明抽象类属性的大多数 Pythonic 方式

python - 类型错误 : ufunc 'add' did not contain a loop with signature matching types

python-3.x - 在 sample-app.py 上将 SSL 与 python-instagram 和 localhost 结合使用

Python - 查找列表中第一个非空项的索引

php - preg_split 与 mb_split