从嵌套列表中删除列表

2024-09-28 19:10:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是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

Tags: in列表forsegmentremovelistsmallclusters
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)

您不应该在遍历列表时尝试修改它。做到这一点的一个好方法是使用列表理解:

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

相关问题 更多 >