我有一长串元组,像这样:
a_lis = [('[', '1O--'), ("'", '1B--'),('hi', 'SDFD29384'), ('there','2398SDFDSF'),("'", '1B--'), (']', '1C--')]
如何从a_lis
中删除所有元组(*):('[', '1O--'), ("'", '1B--'),("'", '1B--'), (']', '1C--')
?你知道吗
我试着:
flat_list = filter(flat_list, lambda x: x[0] == '[' && x[1] == "'")
但是,我得到了一个不可iterable的错误,为了得到?地址:
a_lis = [('hi', 'SDFD29384'), ('there','2398SDFDSF')]
那是因为你给filter的参数顺序不正确。你知道吗
只是使用
注意:查看您的数据,更好的方法如下所示:
编辑:如下面的注释所述,上面的代码使平面列表成为生成器。要获得具体的列表,只需使用列表理解:
或者
有一种方法:
另一种方法是:
另外两种可能性:
这个函数实际上修改了
a_list
,因此根据上下文的不同,可能并不理想。有一种类似的方法涉及set.remove()
甚至set.discard()
(不需要try
块)。你知道吗请注意,任何基于
set
的方法都要求列表中的所有对象都是可散列的—在给出的示例中,它们都是元组,所以这很好。set
方法中的另一个警告是,结果中幸存的项可能与原始项的顺序不同。使用OrderedSet
可以解决这个问题,但是会带来更多的开销,因为这不是一个核心包/数据类型。你知道吗相关问题 更多 >
编程相关推荐