Python:如何检查列表是不是包含数值并返回布尔值?

Posted

技术标签:

【中文标题】Python:如何检查列表是不是包含数值并返回布尔值?【英文标题】:Python: How can I check if a list contain a numeric value and return a boolean?Python:如何检查列表是否包含数值并返回布尔值? 【发布时间】:2021-12-14 05:19:56 【问题描述】:

假设我有两个列表

list1 = [1, "x", 3, "y", 5]

list2 = ["x", "y", "x", "y"]

我想要一个函数,它为 list1 返回一个布尔值 True,因为它包含一些整数,而对于 list2,它返回一个布尔值 False,因为它只包含字符串。

【问题讨论】:

试试any 【参考方案1】:
def is_not_all_strings(lst):
    return not all(isinstance(k,str) for k in lst)

或者,根据需要:

def contains_an_integer(lst):
    return any(isinstance(k,int) for k in lst)

【讨论】:

如果是关于整数的任何可能会更好。 我认为哪个更有用取决于需要,而不是数据类型。 @infinitezero @Burakhan Aksoy:“为 list1 返回一个布尔值 True,因为它包含一些整数”【参考方案2】:

如果你想捕获各种数值,而不仅仅是整数,你可以使用numbers.Number,像这样:

import numbers

def has_numbers(items):
    return any(isinstance(item, numbers.Number) for item in items)

这不仅会检测整数,还会检测浮点数、小数、分数等。

【讨论】:

【参考方案3】:
def contains_num(l):
    return any(list(map(lambda x:isinstance(x,int),l)))

【讨论】:

list 是不必要的,会导致它遍历所有元素而不是停在第一个数字上?【参考方案4】:

使用for 循环。这样一来,您可以在找到一个整数后返回True,并避免遍历其余元素。

def foo(lst):
    for x in lst:
        if isinstance(x, int):
            return True
    return False

【讨论】:

any 也避免在答案明确后遍历其余元素

以上是关于Python:如何检查列表是不是包含数值并返回布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中检查字符串中是不是包含数值? [复制]

检查数据库中是不是存在行,并返回布尔值

检查两个值是不是存在并返回命名布尔值

检查整数是不是为 0 并返回布尔值的简短方法

如何检查字符串是不是包含列表的任何元素并获取元素的值?

使用 argparse 将逗号分隔的多个整数值作为输入,并检查列表中是不是存在这些值