Python - 根据另一个列表将列表拆分为子列表

标签 python list python-2.7 split

我有两个列表:l1 = [0, 0.002, 0.3, 0.5, 0.6, 0.9, 1.3, 1.9]l2 = [0.5, 1.0, 1.5, 2.0] .我要拆分l1定义为 l2 的两个索引之间的元素的子列表.例如 l1将等于 [[0,0.002, 0.3], [0.5, 0.6, 0.9], [1.3], [1.9]] .

这是我的解决方案:

l3 = []
b=0
for i in l2:
    temp = []
    for p in l1:
        if b <= p < i:
        temp.append(p)
    l3.append(temp)
    b+=0.5

这个解决方案是我代码中的一个巨大瓶颈。有没有更快的方法来做到这一点?

最佳答案

您的列表已排序,因此无需在此处进行双重循环。

以下基于两个列表作为输入生成子列表:

def partition(values, indices):
    idx = 0
    for index in indices:
        sublist = []
        while idx < len(values) and values[idx] < index:
            sublist.append(values[idx])
            idx += 1
        if sublist:
            yield sublist

然后你可以迭代 partition(l1, l2)获取单个子列表,或调用 list()一次性生成整个列表列表:
>>> l1 = [0, 0.002, 0.3, 0.5, 0.6, 0.9, 1.3, 1.9] 
>>> l2 = [0.5, 1.0, 1.5, 2.0]
>>> list(partition(l1, l2))
[[0, 0.002, 0.3], [0.5, 0.6, 0.9], [1.3], [1.9]]

关于Python - 根据另一个列表将列表拆分为子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618390/

相关文章:

python - 除了 `NoneType` 之外,Python 中还有什么是 `None` 吗?

python - 从 Python 脚本运行时找不到 Nmap

python - 是否可以从 Bokeh 工具栏中删除特定工具,特别是 Bokeh Logo 和帮助图标?

python - PyCharm 无法识别已安装的模块 (cx_oracle)

java - 列表与 map /字典

javascript - 隐藏和显示列表和子列表

python - Lambda 用于不同的列表元素

python - 在 python 中使用 zerorpc 对项目进行 dockerizing 时导入错误

python - 在 python 字典列表中查找重复项

python - 升级numpy版本