Это один вкладыш
list(dict.fromkeys(x for x in (round_or_none(s) for s in l) if x))
(если, конечно, вы заранее определили функцию round_or_none
,
def round_or_none(s):
try:
return round(float(s))
except ValueError:
pass
, то есть: -)
Демо:
>>> def round_or_none(s):
... try:
... return round(float(s))
... except ValueError:
... pass
...
>>> l = ['100', '200.1', 'z', '300.9', '400', '100.2']
>>> list(dict.fromkeys(x for x in (round_or_none(s) for s in l) if x))
[100, 200, 301, 400]
>>>
Без дополнительной функции
rounded = []
for s in l:
try:
rounded.append(round(float(s)))
except ValueError:
pass
rounded = list(dict.fromkeys(rounded))
Это работает для Python 3.6 и новее, в противном случае используйте OrderedDict
from collections import OrderedDict
...
rounded = list(OrderedDict.fromkeys(rounded))