Day15

总结

三元表达式

"""
三元表达式
    值1 if 条件 else 值2
条件如果成立则使用值1(if前面的数据)
条件如果不成立则使用值2(else后面的数据)
"""
username = input('username>>>:').strip()
res = '管理员' if username == 'jason' else '游客'
print(res)
#  在多选一的情况下三元表达式就丧失了它简介易读的优势,不推荐使用

了解一下:
    if分支的简化版本
    '''子代码块都只有简单的一行情况下 也可以简写  没有三元表达式简单 但是也有人用'''
    name = 'jason'
    if name == 'jason': print(name)
    else: print('1')

生成式

# 列表生成式
name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
res = [name+'帅b' for name in name_list]
print(res)  # 把元素取出每个元素加个'帅b'
	# 筛选功能
res = [name+'帅b' for name in name_list if name == 'jason']
print(res)  # 把元素取出判断是不是'jason',是的话加个'帅b'

# 字典生成式
l1 = ['name', 'age', 'pwd']
l2 = ['jack', 20, 123]
res = {l1[i]: l2[i] for i in range(len(l1))}
print(res)  # {'name': 'jack', 'age': 20, 'pwd': 123}
res = {l1[i]: l2[i] for i in range(len(l1)) if i == 0}
print(res)  # {'name': 'jack'}

# 集合生成式
res = {i for i in range(10)}
print(res)  # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

匿名函数

# 匿名函数:没有函数名的函数,结合其他函数调用

# lambda
lambda 形参:返回值
lambda x:x+2
==>
def index(x)
	return x + 2

# max:统计最大值
l1 = [13, 343, 45, 2, 211, 32, 345, 98, 76, 54]
print(max(l1))  # 345
# 统计字典
dic = {
    'jason' : 100000000000,
    'gerry' : 200000,
    'randy' : 30000,
}
print(max(dic))  # randy
# 比对的其实key的ascii码

print(max(dic, key=lambda key:dic[key]))  # jason

常见重要内置函数

l1 = [1, 2, 3, 4]
# 1.map映射
res = map(lambda x: x + 10, l1)  # 元素全部自增10
print(list(res))  # [11, 12, 13, 14]

# 2.zip拉链
l2 = ['john', 'jack', 'cris', 'johnny']
# 将两个列表中的元素一一对应成对即可
res = zip(l1,l2)
print(list(res))  # [(1, 'john'), (2, 'jack'), (3, 'cris'), (4, 'johnny')]
# 如果数据集之间个数不一致 那么依据短的

# 3.filter过滤
# 筛选出大于2的元素
res = filter(lambda x:x>2, l1)
print(list(res))  # [3, 4]

# 4.reduce归总
from functools import reduce
res = reduce(lambda x, y: x + y, l1)
print(res)  # 10

res = reduce(lambda x, y: x + y, l1, 10)
print(res)  # 20

常见内置函数

# 1.abs()  获取绝对值
print(abs(-1))  # 1

# 2.all(),any()
l1 = [1, 2, 3, 4, False]
print(all(l1))  # False  数据集中所有的元素对应的布尔值为True才返回True
print(any(l1))  # True 数据集中一个元素对应的布尔值为True就返回True

# 3.bin() oct() hex()  进制转换
print(bin(100))  # 0b1100100
print(oct(100))  # 0o144
print(hex(100))  # 0x64

# 4.bytes()  类型转换
bytes和str可以用来解码与编码
s1 = 'hello world 你好世界'
print(bytes(s1, 'utf8'))  # b'hello world \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
print(s1.encode('utf8'))  # b'hello world \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
res = bytes(s1, 'utf8')
print(res)  # b'hello world \xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
res1 = str(res, 'utf8')
print(res1)  # hello world 你好世界

# 5.callable()
# 判断是否可以调用(加括号调用)

# 6.chr()、ord()  字符与数字的对应转换
print(chr(65))  # A  ASCII码
print(ord('A'))  # 65  ASCII码

# 7.dir() 
# 数据类型可以调用的内置方法
print(dir(1))  # ['bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] __开头的不用管

# 8.divmod()
"""
可以使用在网站的分页制作上
    问
        总共250条数据 每页展示25条 需要多少页   10页
        总共251条数据 每页展示25条 需要多少页   11页
        总共249条数据 每页展示25条 需要多少页   10页
"""
print(divmod(250,25))  # (10, 0)  第一个参数是整数部分 第二个是余数部分
print(divmod(251,25))  # (10, 1)
print(divmod(249,25))  # (9, 24)

# 9.enumerate()  枚举
name_list = ['john', 'jack', 'cris', 'johnny']
for i,j in enumerate(name_list):
    print(i,j)  # i类似于是计数 默认从0开始
'''
    0 john
    1 jack
    2 cris
    3 johnny
'''

# 10.eval() exec()  识别字符串中的python代码
# eval()  计算指定表达式的值。也就是说它要执行的Python代码只能是单个运算表达式(eval不支持任意形式的赋值操作),而不能是复杂的代码逻辑,
# exec()  动态执行Python代码。也就是说exec可以执行复杂的Python代码,而不像eval函数那么样只能计算一个表达式的值。

今天学了好多要记的函数

:

posted @ 2022-03-22 22:19  有梦想的阿九  阅读(35)  评论(0)    收藏  举报