2016-10-01 96 views
-3

我需要遍历列表并检查值是字符串还是int。有没有简单的方法在Python中做到这一点?如何检查列表是否包含字符串

例如:

[1,2,3]将是真实的。

["a",2,3]将是错误的。

+0

为什么你需要这个?相反,处理异常可能会更好。请参阅http://stackoverflow.com/questions/12265451/ask-forgiveness-not-permission-explain –

+1

在我看来,您应该先尝试编写一些代码并发布失败的尝试。 SO不是代码写入服务。 –

回答

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同时处理 “统一” 和 “STR” 字符串类型:

注意any()短路以及一旦它知道了结果,看到更多的是,这里:

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 

isinstance可以调用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 
0

假设你的意思是,你需要在列表中的所有值,只有当他们都整数检查功能会返回真的,这是我该怎么做:

def test(list): 
    result=True 
    for elem in list: 
     if type(elem)!=int: 
      result=False 
    return result 
相关问题