如何在python中从列表中删除列表元素?

如何在python中从列表中删除列表元素?,python,list,Python,List,我有这样一个列表: [[1, 'Reason', [('reason',), ('other_reason',)]], [2, 'other', [('dep',), ('path',)]], [3, "foo", [('bar',), ('bar1',)]] ] 我在一个函数中使用了此列表,该函数有时会按原样返回(编辑模式)并在(显示详细信息)模式下将最后一个元素从最后一个位置更改为第一个位置,因此列表如下所示: [ [1, "foo", [('bar',), ('bar1',)]],

我有这样一个列表:

 [[1, 'Reason', [('reason',), ('other_reason',)]], [2, 'other', [('dep',), 
('path',)]], [3, "foo", [('bar',), ('bar1',)]] ]
我在一个函数中使用了此列表,该函数有时会按原样返回(编辑模式)并在(显示详细信息)模式下将最后一个元素从最后一个位置更改为第一个位置,因此列表如下所示:

 [ [1, "foo", [('bar',), ('bar1',)]], [2, 'other', [('dep',), ('path',)]], 
[3, 'Reason', [('reason',), ('other_reason',)]]]
我想删除包含“原因”的列表(第一个示例中的第一个列表)

我尝试使用
list.index('Reason')
方法创建索引,但由于'Reason'不是列表中的元素,因此该方法不起作用

此外,索引也不相同,因此
del list[0]
不是一个好的选择

有什么想法吗?

这个

>>> l = [[1, 'Reason', [('reason',), ('other_reason',)]], [2, 'other', [('dep',), ('path',)]], [3, "foo", [('bar',), ('bar1',)]] ]>>>
>>> [e for e in l if 'Reason' not in e]
[[2, 'other', [('dep',), ('path',)]], [3, 'foo', [('bar',), ('bar1',)]]]
>>>
说明:这将从第一个列表中构建一个新列表,将除包含
'Reason'
的元素之外的所有元素放入其中

>>> l = [[1, 'Reason', [('reason',), ('other_reason',)]], [2, 'other', [('dep',), ('path',)]], [3, "foo", [('bar',), ('bar1',)]] ]>>>
>>> [e for e in l if 'Reason' not in e]
[[2, 'other', [('dep',), ('path',)]], [3, 'foo', [('bar',), ('bar1',)]]]
>>>
[l for l in list if not "Reason" in l]

说明:这将从第一个列表中构建一个新列表,将除包含
'Reason'
的元素之外的所有元素放入其中。让我们假设'Reason'发生了更改,因此将其保留在变量中。下面的代码处理现有列表

[l for l in list if not "Reason" in l]

然后遍历列表,查看子列表中位置1的项是否匹配。如果是,则将其从列表中删除。

让我们假设“原因”发生了变化,因此将其保存在变量删除中。下面的代码处理现有列表


然后遍历列表,查看子列表中位置1的项是否匹配。如果是,请将其从列表中删除。

这不会将最后一个元素替换为第一个元素,而且它会创建一个新列表,而不是修改现有列表。从问题中,我只理解了已经完成的还原。那么我添加相关部分。@Vinny实际上改变顺序似乎不是问题的一部分。据我所知,它只是告诉元素的顺序可能会改变,仅此而已。非常感谢:)是的,改变顺序不是问题的一部分。这不会将最后一个元素替换为第一个元素,而且它会创建一个新列表,而不是修改现有列表。根据问题,我只知道回归已经完成了。那么我添加相关部分。@Vinny实际上改变顺序似乎不是问题的一部分。据我所知,它只是告诉元素的顺序可能会改变,仅此而已。非常感谢:)是的,改变顺序不是问题的一部分