【问题标题】:How to check if a list contains a string如何检查列表是否包含字符串
【发布时间】:2017-02-10 06:30:29
【问题描述】:

我需要遍历一个列表并检查该值是字符串还是整数。在python中有没有简单的方法来做到这一点?

例如:

[1,2,3] 是真的。

["a",2,3] 会是假的。

【问题讨论】:

  • 为什么需要这个?处理异常可能会更好。见stackoverflow.com/questions/12265451/…
  • 在我看来,您应该先尝试编写一些代码并发布您失败的尝试。 SO 不是代码编写服务。

标签: python list


【解决方案1】:

您可以使用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

【讨论】:

    【解决方案2】:

    您可以使用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() 知道结果后也会短路,请在此处查看更多信息:

    【讨论】:

      【解决方案3】:

      假设您的意思是您需要检查列表的所有值,并且只有当它们都是整数时,该函数才会返回 True,这就是我的做法:

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

      【讨论】:

        猜你喜欢
        • 2013-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-13
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 2017-05-25
        • 2017-09-23
        相关资源
        最近更新 更多