过滤python中的列表获取整数

时间:2010-12-05 07:32:48

标签: python

我有一个清单:

['Jack', 18, 'IM-101', 99.9]

如何过滤它以仅获取整数?

我试过

map(int, x)

但它会出错。

ValueError: invalid literal for int()
  with base 10: 'Jack'

4 个答案:

答案 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)