如何提高开发效率
如何提高开发效率
为了提高开发效率,python给我们提供了许多快捷的表达式和内置函数,让我们能快速谢我需要的功能
三元表达式
'''
使用场景:
二选一的时候,推荐使用三元表达式,可以极大程度的简化代码
'''
'''
语法:"""值1 if 条件 else 值2"""
运行顺序:
条件成立使用值1
条件不成立使用值2
'''
eg:
num = 1 if 1 > 2 else 2
print(num)
运行结果:
2
# 三元表达式可以嵌套,但是不推荐使用,容易乱
eg:
num = 1 if 1 > 2 else (2 if 3 > 2 else 3)
print(num)
运行结果:
2
# 针对if分支结构,也有简化版本,看到知道什么意思即可
eg:
num = 1
if num == 1: print(True)
else: print(False)
运行结果:
True
各种生成式
-
列表生成式
name_list = ['petter','oscar','kiven','lili'] # 给每个人添加'_666' eg: name_list = [i+'_666'for i in name_list] print(name_list) 运行结果: ['petter_666', 'oscar_666', 'kiven_666', 'lili_666'] # 列表生成式和if连用 # 除了oscar,其他人添加'_666' eg: name_list = [i+'_666'for i in name_list if i != 'oscar'] print(name_list) 运行结果: ['petter_666', 'kiven_666', 'lili_666'] '''注意:列表生成式可以和if连用,但是不可以在后面加else,因为for和if都可以和else连用,写了else系统不知道你是跟谁连用的''' ''' 语法结构:[列表元素的操作 for循环遍历列表 if条件] 不满足if条件的会被舍弃 ''' -
字典生成式
l1 = ['name','age','gender'] l2 = ['petter',18,'男'] # 将两个列表合成一个字典 eg: dict_info = {l1[i]:l2[i] for i in range(len(l1))} print(dict_info) 运行结果: {'name': 'petter', 'age': 18, 'gender': '男'} # 字典生成式和if连用 # 舍去年龄 eg: dict_info = {l1[i]:l2[i] for i in range(len(l1)) if l1[i] != 'age'} print(dict_info) 运行结果: {'name': 'petter', 'gender': '男'} ''' 语法:{数组1元素:数组2元素 for循环数组长度 if条件} 不满足if条件的数据会被舍去 不可以跟else ''' -
集合生成式
eg: res = {i for i in range(10) if i != 5} print(res) 运行结果: {0, 1, 2, 3, 4, 6, 7, 8, 9} ''' 语法;{元素 for循环 if条件} 不满座if条件的数据会被舍去 不可以跟else '''
没有集合生成式,因为集合生成式就是生成器,又叫迭代器
匿名函数
# 你们函数就是没有函数名的函数
没有函数名该如何调用呢?
需要结合其他函数一起使用
# 定义一个匿名函数
# 语法:lambda 形参:函数体
eg:
lambda x:x+1
# 关于匿名函数的调用
# 求谁的工资最高
eg:
l1 = {
'petter':8000,
'lisa':9000,
'oscar':7000,
'kiven':1000
}
print(max(l1,key=lambda k:l1[k]))
运行结果:
lisa
'''
其实匿名函数就是一些功能极其简单的函数,单独定义的话浪费好几行代码,直接写匿名函数省事,提高开发效率,减少代码量。上述题目中,最后的匿名函数,其实就是:
def get_value(k):
return l1[k]
用匿名函数一行搞定,大大提高了开发效率
总结:对于功能单一,结构简单的函数,直接定义成匿名函数就可以
'''
常见重要内置函数
# 1. map()映射
# map(function,iterable)需要两个参数,一个功能函数,一个可迭代对象
# 把列表的每个元素加10
eg:
l1 = [15,25,35,45,55]
print(map(lambda x:x+10,l1))
print(list(map(lambda x:x+10,l1))
运行结果:
<map object at 0x017EB5B0>
[25, 35, 45, 55, 65]
# 作用:让第二个参数可迭代对象执行第一个参数函数
# map()返回的是一个迭代器对象
==========================================================
# 2. zip()拉链
# zip(iterable,...)可以添加多个参数,但必须是可迭代对象
# 把列表的对应元素配对
eg:
l1 = [1,2,3,4,5]
l2 = ['petter','oscar','kiven','jarry','tom']
l3 = [6,7,8,9]
print(list(zip(l1,l2,l3)))
运行结果:
[(1, 'petter', 6), (2, 'oscar', 7), (3, 'kiven', 8), (4, 'jarry', 9)]
# 作用:把多个可迭代对象的对应位置元素组合到一起形成一个新元素
# 返回的是一个迭代器对象
# 可迭代对象长度不一时,以最短的为准
==========================================================
# 3. filter()过滤
# filter(function,iterable)参数为函数和可迭代对象
# 筛选出大于10的元素
eg:
l1 = [45,9,8,65,23]
print(list(filter(lambda x: x > 10, l1)))
运行结果:
[45, 65, 23]
# 作用:过滤不符合条件的元素
# 返回的是一个迭代器对象
==========================================================
# 4. reduce()归总
# reduce(function, iterable[, initializer])函数,有两个参数|可迭代对象|可选,初始参数
# 求列表所有元素之和
eg:
from functools import reduce
l1 = [4,5,8,6,2,87,9]
print(reduce(lambda x, y: x + y, l1, 0))
运行结果:
121
# 作用:可迭代对象累计
# 返回的是数值
# 第三个参数不写默认为0,写了以写的来
==========================================================
常见内置函数(一)
常见的内置函数比较多,看到要知道什么意思
# abs()绝对值
# print(abs(-123))
# >>>123
# all()与any() 数据集中元素的布尔值判断
# l1 = [18,9,0,1]
# print(all(l1)) # 必须全部是True才会返回True
# print(any(l1)) # 只有有一个是True就返回True
# >>>False
# >>>True
# bin(),oct(),hex() 产生二,八,十六进制数
# print(bin(10)) # 转化成二进制
# print(oct(10)) # 转化成八进制
# print(hex(10)) # 转化成十六进制
# >>>0b1010
# >>>0o12
# >>>0xa
# bytes() 类型转换
# s1 = '你好啊'
# 编码
# res = bytes(s1, 'utf8')
# print(res)
# 解码
# res1 = str(res, 'utf8')
# print(res1)
# >>>b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a'
# >>>你好啊
# callable() 判断是由有加括号调用的能力
# name = '你好啊'
# def index():
# pass
# print(callable(name))
# print(callable(index))
# >>>Fslae
# >>>True
# 方法带有able后缀代表这个方法是判断有没有前面单词的能力,例如readable(是否有读的能力),writeable(是否有写的能力)等等
# chr(),ord() 字符和ASCII码值相互转换
# print(chr(65)) # ASCII码值转换成字符
# print(ord('A')) # 字符转换成ASCII码值
# >>>A
# >>>65
# dir() 返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
# print(dir(666))
# divmod() 求两数相除,返回整除数和余数
# print(divmod(250,25))
# print(divmod(249,25))
# print(divmod(251,25))
# >>>(10, 0)
# >>>(9, 24)
# >>>(10, 1)
# 在制作网页分页时用的特别多
# enumerate() 枚举
# name_list = ['petter','kevin','oscar','lucian']
# 输出neme,并附上序号
# for i,j in enumerate(name_list,start=1):
# print(i,j)
# >>>1 petter
# >>>2 kevin
# >>>3 oscar
# >>>4 lucian
# eval(),exec() 识别字符串中的python代码并执行
# eval('print("你好啊")')
# exec('print("你好啊")')
# >>>你好啊
# >>>你好啊
# eval(res) 只能识别简单逻辑的python代码
# exec(res) 能够识别具有与一定逻辑的python代码
# 这两个函数可以操作文件中的代码,将文件读出来,通过这两个函数执行其中的代码

浙公网安备 33010602011771号