十大常用Python编程技巧

前言

Python语言其实在设计之初就有在考虑它语法的简洁性和可读性
保持一些良好的编程习惯,可以让我们写出更清晰,更优雅,更易读,更赏心悦目的代码

1. 变量的交换

如果我们需要交换变量a和b中的内容,通常我们可以定义一个临时变量,先将变量a的值赋值给临时变量temp,再将变量b的值赋值给变量a,最后将临时变量temp中的值赋值给变量b,完成两个变量值得交换。
代码实现:

a = 6 
b = 8
temp = a
a = b
b = temp

这段代码在Python中其实可以被改成这样

a = 6
b = 8
a, b = b, a

2. 字符串格式化

通常在程序中我们需要组合或者拼接字符串的话,我们可以用加号(+)来做字符串的连接。
代码实现:

time = '2020年8月9日'
print('今天是' + time)

如果只是做两个字符串的拼接,这种方法可以简单实现,但是如果多个字符串进行连接时,使用这种方法就会使程序显得非常杂乱并且不易阅读。而且,当我们在连接整数据的时候,还需要进行类型转换,否则程序报错。例如:

name = '小美'
age = 21
print('我的名字是' + name + '今年' + str(age) + '岁')  # 要将age变量进行类型转换,否则程序报错

在Python中可以利用格式字符占位的方式进行代替,利用Python中的百分号语法来格式化字符串,%s代表这里的内容将被替换成一个字符串,%d代表这里的内容将被代替为一个十进制的数字,多个变量用元组形式进行填补
代码实现:

name = '小美'
age = 21
print('我的名字是%s 今年%d岁' % (name, age))  # 普通字符串与变量之间用%间隔

我们还可以利用Python中的format()函数和花括号语法,format()在这里是字符串对象的一个方法,调用它会返回被格式化过后的新字符串,而花括号中的内容会被最终替换成format)函数中传入的各个参数
代码实现:

name = '小美'
age = 21
print('我的名字是{} 今年{}岁' .format(name, age))  # 注意format方法名前用.进行分隔

使用场景:
如果你有重复的需要被替换的内容,你可以在花括号中写入被替换参数的索引,因此这里的这两个花括号都会被替换成同一个内容
代码实现:

name = '小美'
age = 21
print('我的名字是{0}我的名字是{0} 年龄是{1}' .format(name, age))  # 注意format方法名前用.进行分隔 若一个{}中有索引,其余{}也要有索引

如果你使用的是Python 3.6以上的版本,最简单的写法f-string,我们只需要在字符串开头写一个f,花括号中的内容就会被自动的替换成指定表达式的值,由于这里可以填写任意的表达式,所以甚至可以调用一个函数返回一个数值,并替换在字符串中
代码实现:

name = '小美'
age = 21
print(f'我的名字是{name} 年龄是{age + 1}')  # 注意花括号中的内容为表达式

3. Yield语法

代码演示:

def demo(n):
    a = 0
    b = 1
    for i in range(n):
        yield a
        a, b = b, a + b
for i in demo(10):
    print(i)

yield表示在函数中每当我们计算出一个元素,就立马将这个元素给送出去,也就是说,这里外面的for中就会立即输出这个数,因此使用yield的好处是我们并不需要等待整个列表都生成完毕后,再一个个的输出,yield在英文中的意思是产出,它跟retunn的区别是当函数yield一个数值以后,函数并不会马上返回,而会继续执行下去,yield的优势在于一些非常耗时的操作。

4. 列表解析式

例如我们需要把一个列表中的小写字母字符转换成大写字符,通常会用for in 遍历整个列表,将内容进行转换
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
for i in range(len(color)):
    color[i] = color[i].upper()

其实这里可以使用列表解析式的方法
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
color = [x.upper() for x in color]
print(color)

后面的这个方括号语法实际上是在构造一个新的列表,并把它赋值给之前的这个color变量,方括号里的后半部分实际上是在告诉Python我需要枚举color变量中的所有元素,而其中的每个元素的名字叫做x,而方括号里的前半部分x.upper()则是将这里的每个字符串x转换成大写。
列表解析式其实还有另外一个应用。筛选或者过滤列表中的元素
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
filtered_color = [x for x in color if x.startswith('b')]
print(filtered_color)

我们可以这样理解这行代码的含义:新的列表由x构成,而x是挑选自之前的color列表,并且需要满足if语包中定义的条件

5. Enumerate函数

在遍历列表时,如果我们希望同时得到每一个元素在列表中对应的索引值,我们可以使用一个叫做enumerate()的函数
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
for i, k in enumerate(color):
    print(i, k)

enumerate()函数会在每一次循环的过程中提供两个参数,第一个i代表列表元素的索引值,第二个x代表列表中元素的内容

6.1反向遍历

其实只需要在遍历元素时候加入reversed()函数就可以实现反向遍历
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
for i, k in enumerate(reversed(color)):
    print(i, k)

6.2按顺序遍历

如果我们希望输出的元素是按照名字的字典顺序,也就是说名字以a开头的排在最前面,以z开头的排在最后面,这里我们可以使用到Python中的一个内置函数。
sorted()函数会返回一个新的并经过排序后的列表
代码实现:

color = ['red', 'pink', 'black', 'blue', 'yellow']
for i, k in enumerate(sorted(color)):
    print(i, k)

7.字典的合并操作

a ={"admin ": "123456", "xiaoming": "110100"}
b = {"atu": "10056", "xiaomei": " 66666"}
C = {**a, **b}

这两个星号在Python中叫做解包unpacking,也就是说这里的**a和**b相当是将字典a和b中的内容直接填写到了这里

8.三元运算符

score = 90
x = 'pass' if score > 60 else 'fail'
print(x)

这里的…if…else称为Python中的三元运算符,当if后面的条件满足时,表达式会输出前面的值,当条件不满足时,表达式会输出后面的值

9.序列解包

例如name = ‘Li Si’ 里面存储了李四的姓和名,如果我们想单独提取出他的姓和名,并把他们分别存储到不同的变量中,我们可以利用字符串对象的split()方法, 把这个字符串按空格分割成多个字符串
代码实现:

name = ‘Li Si’
first_ name, last_ name = name.split()

我们直接将split()函数返回的列表中的元素赋值给furst_name和last_name, 中间以逗号的形式隔开, 这个操作在Python中被称作序列解包, 这里的“序列”其实并不一定需要是列表

10. with语句

	with open('student.txt', 'r') as file :
 		  	 content = file.read()

这样写的话,就不再需要手动的调用close()函数了,当with语句之后的代码执行完毕之后,这个文件就会自动被Python关闭

推荐关注

微信公众平台:青年之学

本站为非盈利性站点,所有资源、文章等仅供学习参考,并不贩卖软件且不存在任何商业目的及用途,如果您访问和下载某文件,表示您同意只将此文件用于参考、学习而非其他用途。
本站所发布的一切软件资源、文章内容、页面内容可能整理来自于互联网,在此郑重声明本站仅限用于学习和研究目的;并告知用户不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
如果本站相关内容有侵犯到您的合法权益,请仔细阅读本站公布的投诉指引页相关内容联系我,依法依规进行处理!
作者:理想
链接:https://www.imyjs.cn/archives/185
THE END
二维码
十大常用Python编程技巧
前言Python语言其实在设计之初就有在考虑它语法的简……
<<上一篇
下一篇>>
文章目录
关闭
目 录