【问题标题】:Check if substring exists in a list containing booleans?检查包含布尔值的列表中是否存在子字符串?
【发布时间】:2022-01-12 11:41:24
【问题描述】:

我想检查列表中是否存在子字符串。但我无法遍历它,因为它有布尔值。我正在尝试将布尔值转换为 str(booleans) 但有必要吗?我确信必须有另一种有效的方法而不改变数据

def replace_falseTrue_as_strings(lst):
    for i in lst:
        if isinstance(i,list):
            for j in i:
                if all(not isinstance(j,list)):
                    for k in j:
                        k_new.append(str(k))
                    return k
                if any(isinstance(j,list)):
                    return replace_falseTrue_as_strings(j)
        else:
            i_new.append(str(i))
            return j_new

【问题讨论】:

  • @WiktorStribiżew 需要它们。谢谢大家的cmets。应该更加努力地使用 isinstance。
  • 根据您的需要,您也可以使用any(needle in s for s in map(str, haystack))。如果您搜索"rue",它将接受True,如果您搜索"23",则接受整数1234。这可能需要也可能不需要,具体取决于上下文。

标签: python python-3.x list algorithm


【解决方案1】:

您可以添加类型检查:

any( (isinstance(x, str) and 'abl' in x) for x in some_list)

如果x 不是字符串(此处为布尔值),isinstance(x, str) 为 False 并且不检查第二个成员,这样可以避免 TypeError。

【讨论】:

    【解决方案2】:

    试试这个:

    any('abl' in x for x in your_list if isinstance(x, str))
    

    它会检查列表中每个项目的类型,并且只有当它是一个字符串时才会继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2011-11-09
      • 2013-05-18
      相关资源
      最近更新 更多