如何删除列表中除最后一个整数之外的所有整数?
来自
mylist = [('a',1,'b',2,'c',3), ('d',1,'e',2),('f',1,'g',2,'h',3,'i',4)]
至
[('a','b','c',3), ('d','e',2),('f','g','h','i',4)]
我尝试执行以下操作,但没有任何反应。
no_integers = [x for x in mylist if not isinstance(x, int)]
最佳答案
使用 filter
进行打包的一种方法:
[(*filter(lambda x: isinstance(x, str), i), j) for *i, j in mylist]
输出:
[('a', 'b', 'c', 3), ('d', 'e', 2), ('f', 'g', 'h', 'i', 4)]
说明:
for *i, j in mylist
:打包mylist
的元素(即('a',1,'b',2 ,'c',3)
, ...) 到直到最后的所有内容 (*i
) 和最后 (j
)。因此它将产生
(('a',1,'b',2,'c'), 3)
等等。filter(lambda x: isinstance(x, str), i)
:来自i:('a',1,'b',2,'c' )
,仅过滤掉str
对象。因此
('a',1,'b',2,'c')
变为('a','b','c')
。(*filter, j)
:将2
的结果解包到最后一个元素为j
的元组中。所以它变成了
('a', 'b', 'c', 3)
。
关于python - 从 python 中的列表中删除所有整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70179736/