我需要遍历列表并检查值是字符串还是int。在python中有没有简单的方法呢?
例如:
[1,2,3]
是真的。
["a",2,3]
将是错误的。
答案 0 :(得分:6)
您可以使用all执行此操作,这会在满足错误条件时短路。
>>> my_list = [1, 2, 3]
>>> all(type(d) == int for d in my_list)
True
>>> my_list = ['1', 2, 3]
>>> all(type(d) == int for d in my_list)
False
在调用all
时也可以使用
>>> my_list = [1, 2, 3]
>>> all(isinstance(d, int) for d in my_list)
True
>>> my_list = ['1', 2, 3]
>>> all(isinstance(d, int) for d in my_list)
False
答案 1 :(得分:3)
您可以结合使用any()
和isinstance()
:
In [1]: def contains_string(l):
...: return any(isinstance(item, basestring) for item in l)
...:
In [2]: contains_string([1,2,3])
Out[2]: False
In [3]: contains_string(['a',2,3])
Out[3]: True
basestring
处理" unicode"和" str"字符串类型:
请注意any()
一旦知道结果就短路,请点击此处了解更多信息:
答案 2 :(得分:0)
假设你的意思是你需要检查列表中的所有值,并且只有当它们都是整数时,函数才会返回True,这就是我的方法:
def test(list):
result=True
for elem in list:
if type(elem)!=int:
result=False
return result