Python少见语法现象|全新实例
很多网友反映之前很多基础语法内容已经讲过,今天咱们避开老生常谈知识点,分享平时教程很少提到的Python语法现象,全部附带可直接运行代码,手机上就能敲。
1、序列解包(多变量同步赋值)
s = ["白云","青山","长河"]
a,b,c = s
print(a,b,c)
运行结果:白云 青山 长河
逐条讲解:
第1行:创建列表s,里面存放三段文本
第2行:序列解包,把列表内三个元素依次分配给变量a、b、c;元素数量必须和变量数量保持一致,数量不对会直接报错
第3行:打印三个变量
拓展代码
lst = [11,22,33,44,55]
x,y,*z = lst
print(x,y,z)
运行结果:11 22 [33, 44, 55]
逐条讲解:
第1行:定义列表lst,包含5个数字
第2行:*z用来收集剩下所有元素,前两项分给x、y,剩余数据打包成列表存入z
第3行:打印输出
2、海象运算符 := 赋值表达式
text = "自学编程"
if (n := len(text)) > 3:
print(f"文字长度{n},文字较长")
运行结果:文字长度4,文字较长
逐条讲解:
第1行:定义字符串变量text
第2行:len(text)计算字符串长度,海象运算符 := 把长度赋值给变量n,紧接着判断n是否大于3;括号不能省略
第3行:条件成立,打印文本
3、链式比较
score = 78
if 60 <= score <= 90:
print("成绩中等")
运行结果:成绩中等
逐条讲解:
第1行:变量score储存分数78
第2行:Python专属链式比较,等价于60 <= score and score <=90,连续区间判断
第3行:条件满足,执行打印
4、any() 和 all()
data = [22,15,88,5]
r1 = any(x>80 for x in data)
r2 = all(x>10 for x in data)
print(r1,r2)
运行结果:True False
逐条讲解:
第1行:创建列表data
第2行:any(),只要列表任意一个数字大于80,结果为True
第3行:all(),只有列表全部数字大于10,结果才为True
第4行:打印两个判断结果
5、enumerate 获取下标+内容
python
words = ["春","夏","秋","冬"]
for idx,w in enumerate(words):
print(idx,w)
运行结果:
0 春
1 夏
2 秋
3 冬
逐条讲解:
第1行:定义文字列表words
第2行:enumerate遍历列表,idx接收序号,w接收列表里的文字
第3行:循环内依次打印序号和文字
拓展写法
python
words = ["春","夏","秋","冬"]
for idx,w in enumerate(words,start=1):
print(idx,w)
逐条讲解:
start=1 设置序号从1开始计数,不再默认从0开始
6、集合运算
python
a = {"苹果","香蕉","橙子"}
b = {"香蕉","葡萄"}
print(a & b)
运行结果:{'香蕉'}
逐条讲解:
第1行:创建集合a
第2行:创建集合b
第3行: & 代表交集,取出两个集合里面同时存在的数据
7、while-else 冷门结构
i = 1
while i <=3:
print(i)
i +=1
else:
print("循环正常结束,没有被break打断")
运行结果:
1
2
3
循环正常结束,没有被break打断
逐条讲解:
第1行:变量i初始值设置为1
第2行:开启while循环,条件i<=3
第3行:打印i
第4行:i自增1
第5行:else,只有循环正常跑完、没有遇到break跳出时,这段代码才会执行
8、f-string格式化进阶
n = 6
print(f"{n:03d}")
运行结果:006
逐条讲解:
第1行:变量n赋值6
第2行::03d代表把数字格式化为3位整数,位数不足时,前面自动补0
抖音号:筛过岁月,藏喜入怀