前言
整理文档的时候偶然翻到了3年前自己学习python的时候做的一些笔记,觉得里面有些东西应该可能大概似乎对刚开始学习python的同学有所帮助,于是便有了这篇文章,每篇所记的数量不多,大概10个左右,方便同学记忆,有很简单的,也有比较难(相对新手)的,预计这个系列将会持续三到四篇,如果对小伙伴有帮助,还请点个赞,你的支持就是对我最大的鼓励。
1.多变量同时赋值
想一次性给多个变量同时赋值,例如整数,字符串等,这在C/C++里要写多行,比较麻烦,python可以var1,var2,、、、 = exp1,exp2,、、、,例如:
a, b, c, d = 1, "I'm a string", 1 == 2, 0
这个运算经常可以用来交换两个相同类型变量的值,例如:
a,d = d,a
print(a, d)
#0, 1
2.三元运算
类似C/C++中的"?:",python也有三元运算,而且更符合自然语言逻辑,例如想要给一个变量赋布尔值:
c = True if a > d else False
# c = False
对简单布尔变量来说,更简单的可以用下面这个来表示:
c = a > d
# c = False
3.字符串切片高级用法
字符串[m:n:k],其中m表示起始位置,默认0,n表示结束为止,默认字符串长度-1,k表示步长,例如
“0123456789”[1:8:2] = "1357"
“0123456789”[::-1] = "9876543210" # 因此-1常用于将字符串逆序
4.字符串常用方法
- str.lower()或str.upper()返回字符串str的副本,全部大写或小写。
- str.split(sep)返回一个列表,由str根据sep被分隔的部分组成,将由sep分隔的字符分别作为一个字符串列出。
- str.count(sub)返回子串sub在str中出现的次数。
- str.replace(old,new)返回str的相应old被替换后的副本。
- str.center(width,fillchar),字符串根据width居中,再用fillchar字符填充剩余的部分。
- str.strip(chars)去掉str中左右两侧chars中列出的字符。
- str.join(iter),在iter变量中除最后一个元素外每个元素后面加一个str,主要用于字符串分隔。
5.完整的异常处理
完整的异常处理除了try和except,还有else和finally关键字,else的语句在不发生异常时执行,finally对应语句不管有没有异常都会执行,灵活运用的话,在解决一些算法题时非常有用
try:
pass
except:
pass
else:
pass
finally:
pass
6.循环语句的高级用法
在循环体后接一个else,else后的语句在循环正常退出(没有被break)时会执行,灵活运用,可提升debug的效率,也可在程序逻辑设计时加上这句。
for i in range(10):
pass
else:
pass
a = 0
while a < 10:
# do something
a += 1
else:
pass
7.lambda表达式
有时候需要对几个变量进行操作/比较等,又不想单独定义一个函数,或者只需要用一次,那就用lambda。函数名 = lambda 参数:表达式,有点类似C语言里的宏定义。例如:
f = lambda x, y: x + y
print(f(1 + 5)) # 6
lambda还常用在一个函数的参数需要是另一个函数时,例如常用在自定义排序规则时:
from functools import cmp_to_key
a = [1,3,2,-1,4,8]
a.sort(key = cmp_to_key(lambda x, y: x - y)) # x-y升序,y-x降序,此处com_to_key为python3语法
# a = [-1,1,2,3,48]
8.关于python中的变量
python中一切数据都是对象,例如常量10,如果
x = 10
y = 10
那其实x,y这两个变量都只是指向10这个对象的引用,同理,对字符串常量来说也是,所以如果在程序中碰到了感觉莫名其妙的bug,那就可以想想是不是这个引起的问题。
9.计时程序运行用时
可以用time库的perf_counter()函数来计算循环所耗费的时间,这样有助于分析代码,优化代码。例如:
from time import perf_counter
start = perf_counter()
# do something
end = perf_counter()
print(end - start)
10.由两个列表创建字典
有两个等长列表,比如a = [1,2,3,4],b=[str(x) for x in range(1, 5)],想以a列表的值为键,b列表的值为值,生成一个列表,可以这么做:
a = [1,2,3,4]
b = [str(x) for x in range(5)]
c = dict(zip(a, b))
第一篇先到此结束
第二篇见这里:
python的一些技巧和知识点(二)
觉得有帮助的话,点个赞再走吧?