如何在Python中移除数组内类型为(list, float)的指定元组
解决方法
首先注意你的原始列表定义存在语法错误,元素之间需要添加逗号,正确的定义方式如下:
myList = [([1, 2, 3], 5.0), ([4, 5, 6], 2.0), ([2, 1, 7], 1.0)]
方法一:直接使用list.remove()
你要移除的目标本身就是列表中的一个元组元素,直接将该元组作为参数传入remove()即可,完全不需要用到zip:
myList.remove(([4, 5, 6], 2.0))
执行后myList会变为你需要的形式:
[([1, 2, 3], 5.0), ([2, 1, 7], 1.0)]
你的代码报错原因
你使用list(zip([4, 5, 6], 2.0))时,zip()要求所有传入参数都是可迭代对象,但2.0是浮点数,不属于可迭代类型,因此抛出TypeError: 'float' object is not iterable。而且你要移除的是一个包含列表和浮点数的元组,zip属于完全多余的操作。
方法二:列表推导式(更安全)
如果不确定目标元素是否存在于列表中,用列表推导式过滤目标元素会更稳妥,避免元素不存在时触发报错:
myList = [item for item in myList if item != ([4, 5, 6], 2.0)]
内容的提问来源于stack exchange,提问作者bonepasta
相关产品推荐
相关产品推荐

