当前位置: 首页 > news >正文

python一条语句分析几个常用函数和概念

前言

过年也没完全闲着,每天用一点点时间学点东西,本文为大家介绍几个python操作的细节,包含all、any、for in等操作,以及介绍我解决问题的思路。

一、开篇

先从我看到的一个简单的语句开始。

text = '拍照'
any(word in text for word in ["拍照", "拍张照"])

刚看到这个语句的时候我整个人完全懵住了,完全看不懂这是干啥的。不过其实编程难的不是这些东西,这些东西再也不怕,也能想办法解决掉,而隐藏在这后面的编程思维及数学等知识是很难解决的。

1.1 any、all

言归正传,看到这个语句后,我想到的就是如何将复杂的问题简单化。

于是我先查了一下any函数,查到any和all函数都是对于集合而言的。

描述

any() 函数用于判断给定的可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True。

函数等价于:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

Python 2.5 以上版本可用。

语法

以下是 any() 方法的语法:

any(iterable)

参数

  • iterable -- 元组或列表。

返回值

如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true。

参考出处:http://www.runoob.com/python/python-func-any.html


描述

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False。

函数等价于:

def all(iterable): for element in iterable: if not element: return False return True

Python 2.5 以上版本可用。

语法

以下是 all() 方法的语法:

all(iterable)

参数

  • iterable -- 元组或列表。

返回值

如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;

注意:空元组、空列表返回值为True,这里要特别注意。

参考出处:http://www.runoob.com/python/python-func-all.html

简单点说,any函数用于判断给定的可迭代参数iterable是否全部为空对象,如果都为空、0、false中的一种(以下简称为空),则返回False,如果不都为空,则返回True;而all函数刚好相反,如果全不为空,则返回True,否则返回False。

1.2 for in

这就是说上面的语句any里面是一个iterable对象。我们再来看一下里面的语句:

for 循环语句

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

语法:

for循环的语法格式如下:

for iterating_var in sequence:
   statements(s)

流程图:

python_for_loop

参考出处:http://www.runoob.com/python/python-for-loop.html

text = '拍照'
(word in text for word in ["拍照", "拍张照"])

可以明显的看到一个for,for in在python里面很明显,简单的说就是循环一个集合,并对此集合进行过滤、计算等操作。同样先简化它:

(word for word in ["拍照", "拍张照"])

这很明显,生成的集合与原来相同,但是平常我们看到的都是这样的:

[word for word in ["拍照", "拍张照"]]

这里面就牵涉到python生成器的概念。

1.3 生成器

生成器的优点在于不需要事先计算,只需要在需要的时候才会调用,不浪费存储空间和计算时间。简单的说生成器是一种特殊的集合,这种集合并不像普通的集合一样事先全部算出,而是在需要的时候才去计算。其实实现方式很简单,将[]换成()即可,于是就有了上面的语句。关于生成器的其他操作和生成方式可以在网上查阅相关资料,这里不再赘述。

1.4 继续for in

接着上面的for in继续介绍,(word for word in ["拍照", "拍张照"])结果与原始数据相同,那么如果我们想要产生一点变化就要对第一个word执行一个函数,于是就有了word in text,这里的in就是个函数,判断word是否是在text中,即word是否是text的子串,相当于其他语言的contain。

这样就很清楚了,(word in text for word in ["拍照", "拍张照"])表示循环原始集合,判断每个元素是否是给定的text字符串的子串,返回的是个True、False集合。

当然我们也可以在循环的时候实现过滤,看如下语句:

(word for word in ["拍照", "拍张照"] if word in text)

貌似这条语句跟上面的差别就在于word in text的位置发生了变化,并多了个if。其实二者差别非常大,这里实现的功能是判断word是否是text的子串,如果是则取出,相当于过滤掉不是子串的对象,最终返回的是一个字符串集合。

1.5 总体

那么这里我们再来看一下最开始的语句:

text = '拍照'
any(word in text for word in ["拍照", "拍张照"])

综合以上语句就可以知道此语句实现的是循环集合判断每一个字符串是否是给定的text的子串,最终如果不全为空的话就返回True,即text只要包含集合中的任意一个字符串,则返回True。可以用于命令检测等等场合。

二、总结

本文通过一个稍微复杂的语句,为大家介绍了python中几个常用的函数和概念,并分析了由繁而简的过程。

 

出处:http://www.cnblogs.com/shoufengwei/p/8463203.html

相关文章:

  • 使用strtok_s函数从一个字符串中分离出单词
  • Android Studio_更新Gradle
  • MyBatis源码解读之SqlSession
  • 【小松教你手游开发】【系统模块开发】根据上一个GameObject坐标生成的tips界面...
  • 观察者模式在One Order回调函数中的应用
  • grep sed awk 练习题
  • #define与typedef区别
  • Linux下命令设置别名--alias(同实用于mac)
  • Eclipse/MyEclipse导入导出注释模板
  • 正则介绍以及grep
  • AI的故事:半人马的诞生之路
  • 共享单车引发秩序问题增多,政府正在研究相关管理办法
  • web后台过程
  • 0314-布局遇到的问题(山东理工大)
  • java多线程处理导入数据拆分List集合 同步处理插入数据
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • eclipse的离线汉化
  • es6
  • Git 使用集
  • JavaScript函数式编程(一)
  • Java基本数据类型之Number
  • Linux链接文件
  • oldjun 检测网站的经验
  • Vue组件定义
  • Windows Containers 大冒险: 容器网络
  • 机器学习学习笔记一
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)965
  • 思维导图—你不知道的JavaScript中卷
  • 一个项目push到多个远程Git仓库
  • 一些css基础学习笔记
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​香农与信息论三大定律
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (06)金属布线——为半导体注入生命的连接
  • (42)STM32——LCD显示屏实验笔记
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (二)pulsar安装在独立的docker中,python测试
  • (分享)自己整理的一些简单awk实用语句
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)可以带来幸福的一本书
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET程序员迈向卓越的必由之路
  • .NET简谈设计模式之(单件模式)