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中用pycurl监控http响应时间脚本分享
Feb 02 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python实现端口检测的方法
Jul 24 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python实现文件的分割与合并
Aug 29 Python
浅析Python3 pip换源问题
Jan 06 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Python操作Jira库常用方法解析
Apr 10 Python
Python自省及反射原理实例详解
Jul 06 Python
python -v 报错问题的解决方法
Sep 15 Python
详解Python中的进程和线程
Jun 23 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
聊天室php&amp;mysql(一)
2006/10/09 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
php如何连接sql server
2015/10/16 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
JavaScript 事件系统
2010/07/22 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
大专生简历的自我评价
2013/11/26 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
行政助理的岗位职责
2014/02/18 职场文书
实习公司领导推荐函
2014/05/21 职场文书
个人委托书范本汇总
2014/10/01 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
英语演讲开场白
2015/05/29 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js