Python学习笔记:条件、循环及其他语句

news/2024/11/27 0:12:32/

条件、循环及其他语句

赋值

赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表。

>>> a, *b, c = "abc" 
>>> a, b, c 
('a', ['b'], 'c')

这种收集方式也可用于函数参数列表中

条件语句

用作布尔表达式(如用作if语句中的条件)时,下面的值都将被解释器视为假:

False None 0 “” () [] {}

条件表达式

status = “friend” if name.endswith(“Gumby”) else “stranger”

如果条件(紧跟在if后面)为真,表达式的结果为提供的第一个值(这里为"friend"),否则为第二个值(这里为"stranger")。

链式比较

>>> age = 10
>>> 0 < age < 100
True

is;相同运算符

# 值相同的列表
>>> x = [1, 2]
>>> y = [1, 2]
>>> x == y
True
>>> x is y
False# 值相同的元组
>>> m = (6, 9)
>>> n = (6, 9)
>>> m == n
True
>>> m is n
False# 相同字符串
>>> a = 'hello'
>>> b = 'hello'
>>> a == b
True
>>> a is b
True

PS:不要将is用于数和字符串等不可变的基本值。鉴于Python在内部处理这些对象的方式,这样做的结果是不可预测的。

循环语句

循环中的else语句

from math import sqrt 
for n in range(99, 81, -1): root = sqrt(n) if root == int(root): print(n) break 
else: print("Didn't find it!")

简单推导

列表推导

>>> [x*x for x in range(10) if x 3 == 0] %
[0, 9, 36, 81]

字典推导

>>> squares = {i:"{} squared is {}".format(i, i**2) for i in range(10)} 
>>> squares[8] 
'8 squared is 64'

使用圆括号代替方括号并不能实现元组推导,而是将创建生成器

del语句

不仅会删除到对象的引用,还会删除名称本身

>>> x = ["Hello", "world"] 
>>> y = x 
>>> y[1] = "Python" 
>>> x 
['Hello', 'Python'] 
# 你可能认为通过删除x,也将删除y,但情况并非如此。
>>> del x 
>>> y 
['Hello', 'Python']

x和y指向同一个列表,但删除x对y没有任何影响,因为你只删除名称x,而
没有删除列表本身(值)。事实上,在Python中,根本就没有办法删除值,而且你也不需要这样做,因为对于你不再使用的值,Python解释器会立即将其删除。

小结

打印语句:你可使用print语句来打印多个用逗号分隔的值。如果print语句以逗号结尾,后续print语句将在当前行接着打印。

导入语句:有时候,你不喜欢要导入的函数的名称——可能是因为你已将这个名称用作他用。在这种情况下,可使用import … as …语句在本地重命名函数。

赋值语句:通过使用奇妙的序列解包和链式赋值,可同时给多个变量赋值;而通过使用增强赋值,可就地修改变量。

代码块:代码块用于通过缩进将语句编组。代码块可用于条件语句和循环中,还可用于函数和类定义中(这将在本书后面介绍)。

条件语句:条件语句根据条件(布尔表达式)决定是否执行后续代码块。通过使用if/elif/else,可将多个条件语句组合起来。条件语句的一个变种是条件表达式,如a if b else c。

断言:断言断定某件事(一个布尔表达式)为真,可包含说明为何必须如此的字符串。如果指定的表达式为假,断言将导致程序停止执行(或引发第8章将介绍的异常)。最好
尽早将错误揪出来,免得它潜藏在程序中,直到带来麻烦。

循环:你可针对序列中的每个元素(如特定范围内的每个数)执行代码块,也可在条件为真时反复执行代码块。要跳过代码块中余下的代码,直接进入下一次迭代,可使用continue语句;要跳出循环,可使用break语句。另外,你还可在循环末尾添加一个else子句,它将在没有执行循环中的任何break语句时执行。

推导:推导并不是语句,而是表达式。它们看起来很像循环,因此我将它们放在循环中讨论。通过列表推导,可从既有列表创建出新列表,这是通过对列表元素调用函数、剔除不想要的函数等实现的。推导功能强大,但在很多情况下,使用普通循环和条件语句也可完成任务,且代码的可读性可能更高。使用类似于列表推导的表达式可创建出字典。

pass、del、exec和eval:pass语句什么都不做,但适合用作占位符。del语句用于删除变量或数据结构的成员,但不能用于删除值。函数exec用于将字符串作为Python程序执行。函数eval计算用字符串表示的表达式并返回结果。


http://www.ppmy.cn/news/26068.html

相关文章

【Java基础】Java对象创建的几种方式

先上关键内容&#xff0c;所用到的代码请参考文末示例代码。一、使用new关键字创建对象这是一种最常用的创建对象的方式。Student student1 new Student();二、使用Class的newInstance()方法创建对象需要有一个无参构造方法&#xff0c;这个newInstance()方法调用无参的构造函…

Java反序列化漏洞——CommonsCollections4.0版本—CC2、CC4

一、概述4.0版本的CommonsCollections对之前的版本做了一定的更改&#xff0c;那么之前的CC链反序列化再4版本中是否可用呢。实际上是可用的&#xff0c;比如CC6的链&#xff0c;引入的时候因为⽼的Gadget中依赖的包名都是org.apache.commons.collections &#xff0c;⽽新的包…

【ArcGIS Pro二次开发】(5):UI管理_自定义控件的位置

新增的自定义控件一般放在默认的【加载项】选项卡下&#xff0c;但是根据需求&#xff0c;我们可能需要将控件放在新的自定义选项卡下&#xff0c;在自定义选项卡添加系统自带的控件&#xff0c;将自定义的按钮等控件放在右键菜单栏里以方便使用&#xff0c;等等。 下面就以一…

【MySQL进阶】视图 存储过程 触发器

&#x1f60a;&#x1f60a;作者简介&#x1f60a;&#x1f60a; &#xff1a; 大家好&#xff0c;我是南瓜籽&#xff0c;一个在校大二学生&#xff0c;我将会持续分享Java相关知识。 &#x1f389;&#x1f389;个人主页&#x1f389;&#x1f389; &#xff1a; 南瓜籽的主页…

Pytorch 基础之张量数据类型

学习之前&#xff1a;先了解 Tensor&#xff08;张量&#xff09; 官方文档的解释是&#xff1a; 张量如同数组和矩阵一样, 是一种特殊的数据结构。在PyTorch中, 神经网络的输入、输出以及网络的参数等数据, 都是使用张量来进行描述。 说白了就是一种数据结构 基本数据类型…

Redis学习【8】之Redis RDB持久化

文章目录Redis 持久化1 持久化基本原理2 RDB(Redis DataBase) 持久化2.1 持久化的执行2.2 手动 save 命令2.3 手动 bgsave 命令2.4 自动条件触发2.5 查看持久化时间3 RDB 优化配置3.1 save3.2 stop-write-on-bgsave-error3.3 rdbcompression3.4 rdbchecksum3.5 sanitize-dump-p…

「JVM 编译优化」Java 语法糖(泛型、自动装箱/拆箱、条件编译)

「JVM 编译优化」Java 语法糖&#xff08;泛型、自动装箱/拆箱、条件编译&#xff09; 语法糖可以看做事前端编译期的一些小把戏&#xff1b;虽不会提供实质性的功能改进&#xff0c;但它们或能提高效率&#xff0c;或能提升语法的严谨性&#xff0c;或能减少编码出错的机会&a…

2022黑马Redis跟学笔记.实战篇(六)

2022黑马Redis跟学笔记.实战篇 六4.7.达人探店功能4.7.1.分享探店图文1. 达人探店-发布探店笔记2. 达人探店-查看探店笔记4.7.2.点赞功能4.7.3.基于List实现点赞用户列表TOP104.7.4.基于SortedSet实现点赞排行榜4.8.关注列表4.8.1.关注列表实现原理4.8.2.添加关注1. 好友关注-关…