从嵌套列表中删除列表

时间:2021-06-22 02:11:15

标签: python list nested

我正在使用 Python,第一个我有两个嵌套列表

segments_list = [[[0, 1, 2, 3, 4, 5], ['small', 'modest', 'little'], 16.218604324326577]]

第二个

clusters_appearance_list = [[[0, 0], ['jack']], [[0, 4], ['study']], [[0, 4], ['small', 'modest', 'little']], [[0, 5], ['big', 'large']]]

我想从有 cluster_appearance_list['small', 'modest', 'little'] 中删除列表

这是我的代码

for segment in segments_list:
for cluster in clusters_appearance_list:
    if segment[1] == cluster[1]:
        cluster.remove(cluster)
print(clusters_appearance_list)

我遇到了这个错误

ValueError: list.remove(x): x not in list

2 个答案:

答案 0 :(得分:0)

而不是从 cluster_appearance_list 中删除项目,而是尝试从 cluster 中删除项目

cluster.remove(cluster) 应改为 clusters_appearance_list.remove(cluster)

您的最终代码应如下所示:

segments_list = [[[0, 1, 2, 3, 4, 5], ['small', 'modest', 'little'], 16.218604324326577]]
clusters_appearance_list = [[[0, 0], ['jack']], [[0, 4], ['study']], [[0, 4], ['small', 'modest', 'little']],
                            [[0, 5], ['big', 'large']]]

for segment in segments_list:
    for cluster in clusters_appearance_list:
        if segment[1] == cluster[1]:
            clusters_appearance_list.remove(cluster)
print(clusters_appearance_list)

答案 1 :(得分:0)

您不应该在遍历列表时尝试修改它。做到这一点的一种很好的方法是使用列表推导式:

segments_list = [[[0, 1, 2, 3, 4, 5], ['small', 'modest', 'little'], 16.218604324326577]]

clusters_appearance_list = [[[0, 0], ['jack']], [[0, 4], ['study']], [[0, 4], ['small', 'modest', 'little']], [[0, 5], ['big', 'large']]]

clusters_appearance_list = [cluster for cluster in clusters_appearance_list for segment in segments_list if cluster[1] != segment[1]]

print(clusters_appearance_list)

输出:

[[[0, 0], ['jack']], [[0, 4], ['study']], [[0, 5], ['big', 'large']]]
相关问题