我想对浮点数列表进行排序并取出所有值= 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()
另一种方法是什么?订单不必保存,我不需要我想删除的元素的索引。
答案 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]