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网络编程学习笔记(一)
Jun 09 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
python logging 日志的级别调整方式
Feb 21 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python 实现单例模式的5种方法
Sep 23 Python
用Python爬取某乎手机APP数据
Jun 15 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
angular之ng-template模板加载
2017/11/09 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
python中format()函数的简单使用教程
2018/03/14 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
经典促销广告词大全
2014/03/19 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
禁毒主题班会教案
2015/08/14 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
python pygame 开发五子棋双人对弈
2022/05/02 Python