python各种小知识
一、三元表达式
简化步骤
代码简单且只有一行,可以直接在冒号后面编写
三元表达式:
数据值1+ if 条件+else 数据值2
条件成立则使用数据值1,条件不成立则使用数据值2;
当结果是二选一的情况下,使用三元表达式较为简便;
不推荐多个三元表达式嵌套
二、
例:给列表中所有人名的后面加上_NB的后缀
name_list = ['Alex', 'kevin', 'oscar', 'tony', 'jerry']
方法1:for循环
name_list = ['Alex', 'kevin', 'oscar', 'tony', 'jerry'] new_list = [] for name in name_list: new_list.append(name+'_NB') print(new_list) #['Alex_NB', 'kevin_NB', 'oscar_NB', 'tony_NB', 'jerry_NB']
方法2:列表生成式
简单情况: new_list = [name + '_NB' for name in name_list] # ['Alex_NB', 'kevin_NB', 'oscar_NB', 'tony_NB', 'jerry_NB'] 复杂情况 new_list = [name + "_NB" for name in name_list if name == 'Alex'] print(new_list) new_list = ['大佬' if name == 'Alex' else '小赤佬' for name in name_list if name != 'jack'] print(new_list)
2. 字典生成式
例:把字符串s1 = 'hello world'拆分成单个的字符并加上编号
方法1:for 循环
s1 = 'hello world' for i,j in enumerate(s1): # 默认从0开始编号 print(i,j) s1 = 'hello world' for i,j in enumerate(s1,start=100): # 从100开始编号 print(i,j)
方法2:字典生成式
d1 = {i: j for i, j in enumerate('hello')} print(d1)
3. 集合生成式
res = {i for i in 'hello'} print(res)
注意:没有元组生成式
三、
注意:字典使用max()和min()时,是将键转化成ASCII码之后进行比大小
我们要拿到数值进行比较大小,可以使用匿名函数,最后返回的结果是最大的值所对应的键:
或者自己定义一个函数,通过函数拿到健所对应的值,比较大小之后再返回最大值所对应的键
3. reduce
传多个值,返回一个值
reduce在Python3.x 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数