我有一个清单:
['Jack', 18, 'IM-101', 99.9]
如何过滤它以仅获取整数?
我试过
map(int, x)
但它会出错。
ValueError: invalid literal for int()
with base 10: 'Jack'
答案 0 :(得分:14)
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]
答案 1 :(得分:2)
使用列表理解
>>> t = ['Jack', 18, 'IM-101', 99.9]
>>> [x for x in t if type(x) == type(1)]
[18]
>>>
map(int,x)抛出错误
map函数在x的每个元素上应用int(t)。
这会引发错误,因为int('Jack')会抛出错误。
[编辑:]
同样isinstance是检查它是整数类型的更纯粹方式,正如sukhbir所说。
答案 2 :(得分:1)
如果列表包含格式为import sys, os, django
sys.path.append("/path/to/store") #here store is root folder(means parent).
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "store.settings")
django.setup()
from store_app.models import MyModel
的整数,则列表理解将不起作用。
str
我找到了针对该案例的以下替代解决方案:
['Jack', '18', 'IM-101', '99.9']
您可以在this post中找到有关此解决方案的更多详细信息,其中包含类似问题。
答案 3 :(得分:1)
使用This post:
filter(lambda e: isinstance(e, int), x)