Python用any()函数检查字符串中的字母以及如何使用all()函数


Posted in Python onApril 14, 2022

回想下,在 Python 中编程时,你是否曾经需要检查某个可迭代对象(如列表)中的任何元素或所有元素的计算结果是否为True

假设,我们要判断数字列表a的所有数字是否都大于0,此时你估计会这么干:

a = [1, 2, 3, 4]


def is_big_0(l):
    # 判断列表l的所有数字是否大于,如果大于0则返回True,否则返回False
    for i in l:
        if i <= 0:
            return False
    return True


print(a)

停顿几秒,想一想,假设下次我们要判断其他条件,如每个元素都是偶数或奇数?难道每次都要写一个函数然后for循环遍历吗?

其实python中有两个神奇的函数any()all(),他们可以快速完成上面类似的任务!

接下来,我们将分享 Python 的 any() 和 all() 函数,并使用简单的示例来了解它们的工作原理。

Python 中的布尔数据类型

在学习 any() 和 all() 之前,先快速回顾一下 Python 中的布尔数据类型。你可以在任何 Python 对象上调用 bool() 以获取其真假值。如下代码示例:

# None 的真假值是 False
print(bool(None))
# 输出 False

# 一个空字符串("")的真假值是 False
print(bool(""))
# 输出 False

# 一个空字符串或任何可迭代对象的真假值是 False
print(bool([]))
# 输出 False

# 0 {int (0), float (0.0) 和 complex (0j)} 的真假值是 False
print(bool(0))
# 输出 False

如上面的代码所示,可知:

  • None 的真假值为 False
  • 数字零(0)——整数、浮点数和 0 的复数表示——都是 False
  • 所有空的可迭代对象(如列表、元组和字符串)的真假值为 False

也就是说,所有非零值和非空可迭代对象都为True,这是相当直观的。

请记住:所有非零值和非空可迭代对象都为True,这是相当直观的!

如何在 Python 中使用 any() 函数

让我们了解 any() 函数的语法,先看一些简单的例子,之后再看更有用的例子。

? 语法 :any(iterable)

  • 对于迭代中的任何 x,如果 bool(x) 是 True,返回 True
  • 如果迭代是空,返回 False

因此,any() 函数将一个可迭代对象作为参数,只要该可迭代对象中至少有一项为 True,就返回 True

下面是一些简单的例子来验证 any() 函数是如何工作的:

list_1 = [0, 0, 0, 1, 0, 0, 0, 0]
# any(a list with at least one non-zero entry) returns True
print(any(list_1))
# Output True

list_2 = [0j, 0, 0, 0.0, 0, 0, 0.0, 0]
# any(a list of zeros) returns False
print(any(list_2))
# Output False

list_3 = [True, False, False]
# any(a list with at least one True value) returns True
print(any(list_3))
# Output True

list_4 = ["", "", "code more"]
# any(a list with at least one non-empty string) returns True
print(any(list_4))
# Output True

list_5 = ["", "", ""]
# any(a list of empty strings) returns False
print(any(list_5))
# Output False

如何用any() 函数检查字符串中的数字

现在让我们使用 any() 函数来检查字符串中是否有任何数字。让我们把步骤写下来:

  • 检查:字符串中是否有任何数字
  • 遍历字符串以访问字符串中的每个字符
  • 通过调用 isdigit() 方法检查每个字符是否是数字
  • 如果被测字符是数字,则 isdigit() 返回 True,否则返回 False

列表推导式(list comprehension)对于在列表中收集所有这些真假值非常有帮助。这是一个快速回顾:

# 列表推导式
 [output_expression for every_item in an_iterable]
     |
     |
     V
    result of doing something on each item in the iterable
    
 # 本质上,循环遍历迭代,对每一项进行操作,然后返回操作的结果。

如下面的代码片段所示,我们的示例字符串 coding**is**cool**345 包含数字。

因此,对字符串调用 any() 函数应该返回 True。我们使用列表推导式来根据字符是否为数字来获取 True 和 False 值的列表。

my_string = "coding**is**cool**345"
# 列表推导
are_there_digits = [char.isdigit() for char in my_string]
# 调用any函数
print(any(are_there_digits))

# 输出 True

请注意 are_there_digits 是一个列表,其项数与字符串的长度一样多。

对于字符串中的每个字符,都有一个对应的真假值——如果字符是数字,则为 True,如果字符不是数字,则为 False,如下所示:

my_string = "coding**is**cool**345"
# 列表推导
are_there_digits = [char.isdigit() for char in my_string]
print(are_there_digits)
# Output
# [False, False, False, False, False, False, False, False, False, False, False,
# False, False, False, False, False, False, False, True, True, True]

如何用any()函数检查字符串中的字母

让我们再举一个类似的例子。这一次,让我们检查字符串中的字母。

被测试的字符串***456278)))是不包含字母的 -- 调用 any() 会按预期返回 False。对于字符串中的每个字符,调用 isalpha() 方法检查它是否是一个字母。

my_string = "***456278)))"
num = [char.isalpha() for char in my_string]
print(any(num))

# Output False

如何用any()函数将多个条件与逻辑 OR 组合在一起

假设你有 N 个条件 c1c2c3...cN,考虑下面的伪代码:

if c1 or c2 or ... c_(N-1) or CN:
    # DO THIS
    pass
else:
    # DO THIS
    pass

你现在可以将所有这些条件收集在一个可迭代对象中,例如列表或元组,然后对该可迭代对象调用 any() 以检查一个或多个条件是否为 True,如下所示。是不是很简单? ?

conditions = [c1, c2, ..., c_N]
if any(conditions):
    # DO THIS
    pass
else:
    # DO THIS
    pass

如何使用 all() 函数

让我们从 all() 函数的语法开始:

? 语法:all(iterable)

  • 如果 bool(x) 对于可迭代对象中的所有值 x 为 True,则返回 True
  • 如果可迭代对象为空,则返回 True

all() 函数接受一个可迭代对象作为参数,仅当可迭代对象中的所有项的计算结果为 True,或可迭代对象为空时才返回 True。在所有其他情况下,all() 函数返回 False

如何用all()函数检查字符串中的字母

让我们以类似的例子来检查字符串的某些特征。

测试字符串 coding**is**cool 除了字母之外还包含特殊字符 *。因此,当我们使用 all() 函数检查字符串中的所有字符是否都是字母时,我们应该得到 False

my_string = "coding**is**cool"
are_all_letters = [char.isalpha() for char in my_string]
print(all(are_all_letters))
# Output False

print(are_all_letters)
# Output
# [True, True, True, True, True, True, False, False, True, True, False, False,
# True, True, True, True]

请注意列表 are_all_letters 如何在字符串中出现 * 的所有位置都有 False 值。

如何用all()函数检查字符串中的数字

现在让我们使用 all() 函数检查字符串中的所有字符是否都是数字。测试字符串 56456278 仅包含数字,因此,调用 all() 应该返回 True,因为列表推导式为我们提供了一个 True 值列表。

my_string = "56456278"
are_all_digits = [char.isdigit() for char in my_string]
print(all(are_all_digits))
# Output True

print(are_all_digits)
# Output [True, True, True, True, True, True, True, True]

如何用Pythonall()函数用逻辑 AND 组合多个条件

假设你有 N 个条件 c1c2c3...cN,考虑下面的伪代码:

if c1 and c2 and ... c_(N-1) and CN:
    # DO THIS
    pass
else:
    # DO THIS
    pass

你可以使用 all() 函数通过收集迭代中的条件,然后在迭代上调用 all() 函数来使这一切变得更加简洁。

conditions = [c1, c2, ..., c_N]

if all(conditions):
    # DO THIS
    pass
else:
    # DO THIS
    pass

到此这篇关于Python中的 any() 函数和 all() 函数的文章就介绍到这了!

Python 相关文章推荐
python分析apache访问日志脚本分享
Feb 26 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
Python多继承原理与用法示例
Aug 23 Python
Python实现Linux监控的方法
May 16 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
使用python+whoosh实现全文检索
Dec 09 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
python在package下继续嵌套一个package
Apr 14 #Python
Github 使用python对copilot做些简单使用测试
使用Python拟合函数曲线
Apr 14 #Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
python中 .npy文件的读写操作实例
Apr 14 #Python
Python Matplotlib绘制等高线图与渐变色扇形图
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 #Python
You might like
.htaccess文件保护实例讲解
2011/02/06 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
asp 的 分词实现代码
2007/05/24 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python lambda和Python def区别分析
2014/11/30 Python
python executemany的使用及注意事项
2017/03/13 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
应届实习生的自我评价范文
2014/01/05 职场文书
公务员政审材料
2014/12/23 职场文书
结婚司仪主持词
2015/06/29 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
python中如何对多变量连续赋值
2021/06/03 Python
python3实现常见的排序算法(示例代码)
2021/07/04 Python