首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中过滤一个列表get integers

在python中过滤一个列表get integers
EN

Stack Overflow用户
提问于 2010-12-05 15:32:48
回答 4查看 24.5K关注 0票数 11

我有一个清单:

代码语言:javascript
复制
['Jack', 18, 'IM-101', 99.9]

如何对其进行过滤以仅获取其中的整数??

我试过了

代码语言:javascript
复制
map(int, x)

但它会产生错误。

代码语言:javascript
复制
ValueError: invalid literal for int()
  with base 10: 'Jack'
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-05 15:35:09

代码语言:javascript
复制
>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]
票数 22
EN

Stack Overflow用户

发布于 2016-09-27 20:03:58

如果列表包含格式化为str的整数,则isinstance()解决方案将不起作用。

代码语言:javascript
复制
['Jack', '18', 'IM-101', '99.9']

对于这种情况,我想出了以下替代解决方案:

代码语言:javascript
复制
list_of_numbers = []
for el in your_list:
    try:
        list_of_numbers.append(int(el))
    except ValueError:
        pass

您可以在this post中找到有关此解决方案的更多详细信息,其中包含类似的问题。

票数 6
EN

Stack Overflow用户

发布于 2010-12-05 15:35:00

使用列表理解

代码语言:javascript
复制
>>> t = ['Jack', 18, 'IM-101', 99.9]
>>> [x for x in t if type(x) == type(1)]
[18]
>>> 

整数映射(,x)抛出错误

map函数对x的每个元素应用int(t)。

这会抛出一个错误,因为int('Jack')会抛出一个错误。

编辑:

同样,正如sukhbir所说,isinstance是一种更纯粹的检查它是否为整数类型的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4357832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档