Python 检查列表值

Python 检查列表值,python,Python,我有一个只能包含int的列表,如果它不是int,我如何控制列表中的每个元素并返回消息 例如,我可以使用isdigit()吗 谢谢您可以使用抽象基类和简单循环: from numbers import Number for item in my_list: if not isinstance(item, Number): print '{} is not a number'.format(item) 您可以检查列表中的所有元素是否属于特定类型: all(map(lamb

我有一个只能包含int的列表,如果它不是int,我如何控制列表中的每个元素并返回消息

例如,我可以使用isdigit()吗


谢谢

您可以使用抽象基类和简单循环:

from numbers import Number

for item in my_list:
    if not isinstance(item, Number):
        print '{} is not a number'.format(item)

您可以检查列表中的所有元素是否属于特定类型:

all(map(lambda x: type(x) == type(0), list))
如果
列表
中至少有一个元素的类型与0不同,则返回False iif。您可以根据需要更改条件以满足您的需要,具体取决于您是否需要整数、实数或其他任何内容。

您可以使用和抽象基类:

你为什么不在这种情况下使用

从文档:

数组是序列类型,其行为非常类似于列表,只是其中存储的对象类型受到约束


在这种情况下,你能更具体一点“数字”是什么意思吗?它们都必须是
int
s吗?怎么样
float
s?你为什么不提前知道呢?名单上还有什么?在这种情况下,“数字”是什么?在Python中,我们不是这样检查的——我们知道。是否有理由使用类型(0)而不是简单的int,即类型(x)==int?不鼓励对标识使用类型函数。如果有必要,可以使用isinstance。嗯,事实上,整个答案相当糟糕;)使用
array
进行键入(而不是内存优化)似乎是错误的。另外,这假设OP可以控制列表的控制方式,并希望在添加非int项时抛出一个错误。@delnan:为什么看起来是错误的?我对Python比较陌生。认真地问。如果python可以保证我需要的东西,那么为什么要实现它而不是使用标准库呢?我知道阵列主要用于性能,但这是否意味着这是使用它的唯一原因?考虑到duck类型的动态特性和偏好(如果你不知道这意味着什么),检查和强制(特定)类型是非常不鼓励的。原因有很多,主要与可扩展性有关。在这种情况下,不太可能出现
decimal.decimal
是不可接受的,但使用
array
会破坏它-这只是一个例子。@delnan:我知道duck类型是什么。在这种情况下,用户只需要数字列表。使用结构使我们能够灵活地将任何东西放在那里,然后手动强制每个元素都是一个数字,而不是使用只存储数字的结构,这有点奇怪。@Michael:a
数组
需要一种特定的数字(例如,float)。带有
isinstance(元素,数字)
复选框的列表接受任何数字。查看与duck类型的连接?
>>> all(isinstance(x, Number) for x in mylist)