在Python中过滤列表以获取整数

14 投票
4 回答
33272 浏览
提问于 2025-04-16 08:03

我有一个列表:

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

我该怎么过滤它,只保留里面的整数呢?

我试过:

map(int, x)

但是它报错了。

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

4 个回答

5

使用 filter 函数:

filter(lambda e: isinstance(e, int), x)
6

如果列表里面有一些整数是以 str 的形式存在的,那么用 isinstance() 来判断就不太管用了。

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

我想出了一个替代的解决方案来应对这种情况:

list_of_numbers = []
for el in your_list:
    try:
        list_of_numbers.append(int(el))
    except ValueError:
        pass

你可以在 这个帖子 中找到更多关于这个解决方案的详细信息,里面有类似的问题。

25

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们需要确保在这个过程中不会丢失任何数据,就像在倒水的时候要小心不要洒出来一样。为了做到这一点,我们可以使用一些工具和方法来帮助我们。

比如,我们可以使用“变量”来存储数据,就像把水装在瓶子里。然后,我们可以在需要的时候随时取出这些数据。

另外,我们还可以使用“函数”来处理数据。函数就像是一个机器,你把原料放进去,它会给你一个成品。这样,我们就可以把复杂的操作分成小块,逐步完成。

总之,编程就像是一个大工程,我们需要合理安排每一步,确保数据的安全和准确。

>>> x = ['Jack', 18, 'IM-101', 99.9]
>>> [e for e in x if isinstance(e, int)]
[18]

撰写回答