在Python中过滤列表以获取整数
我有一个列表:
['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]