【问题标题】:remove a list from nested list从嵌套列表中删除列表
【发布时间】:2021-06-22 02:11:15
【问题描述】:

我正在使用 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']]]

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

这是我的代码

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

【问题讨论】:

  • clusters_appearance_list.remove(cluster)。但你也不应该在迭代列表时修改它

标签: python list nested


【解决方案1】:

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

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']]]

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多