从浮动列表中删除所有出现的整数

时间:2013-07-12 13:40:32

标签: python list floating-point element

我想对浮点数列表进行排序并取出所有值= 0,并将列表元素保持为浮点数。这可能吗?


我尝试了a[:] = [x for x in a if x != 0],但这给了我这个错误:

 a[:] = [x for x in a if x != 0]
TypeError: 'float' object is not iterable

然后我尝试a[:] = [x for x in range(len(a)) if x != 0],但收到了一个新错误:

 a[:] = [x for x in range(len(a)) if x != 0]
TypeError: object of type 'float' has no len()

另一种方法是什么?订单不必保存,我不需要我想删除的元素的索引。

3 个答案:

答案 0 :(得分:3)

a对象是一个浮点数,而不是一个列表

>>> a=[1,2,3,0,4]
>>> a=[x for x in a if x!=0]
>>> a
[1, 2, 3, 4]

答案 1 :(得分:2)

如果您只是从列表中删除0,那么Bruce的答案更简洁。但是,如果您希望从列表中删除所有非浮动,则可以执行以下操作:

>>> a = [1.2, 3, 4, 6, 0, 4.5, 3.2]
>>> a = [b for b in a if isinstance(b, float)]
>>> a
[1.2, 4.5, 3.2]
>>>

答案 2 :(得分:0)

blacklist = [0]
blacklist = set(blacklist)
myList = [e for e in myList if int(e) not in blacklist]

更好的是,让你的黑名单成为float s:

的集合
blacklist = [0]
blacklist = set([float(i) for i in blacklist])
myList = [e for e in myList if int(e) not in blacklist]