Welcome!!!

F

伞兵一号,申请出战

如何提高开发效率

如何提高开发效率

为了提高开发效率,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

各种生成式

  1. 列表生成式

    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条件的会被舍弃
    '''
    
  2. 字典生成式

    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
    '''
    
  3. 集合生成式

    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代码
# 这两个函数可以操作文件中的代码,将文件读出来,通过这两个函数执行其中的代码

posted @ 2022-03-22 21:16  程序猿伞兵一号  阅读(169)  评论(0)    收藏  举报