1. 三元表达式
# 值1 if 条件 else 值2
#eg:
age =18
print('需要买票') if age>16 else print('不需要买票')
2. 各种生成器
1. 列表生成式
# 列表生成器可以带上if条件语句,但是不能携带else
# 作用我看着也就是批量改变列表内容,筛选内容吧。。。可以多条件用or或者and连接条件
name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
res = [name+'_SB' for name in name_list if name != 'jason']
print(res)
2. 字典生成式
l1 = ['name', 'age', 'pwd']
l2 = ['jason', 18, 123]
res = {l1[i]: l2[i] for i in range(len(l1)) if i==2}
print(res)
3. 集合生成式
res = {i for i in range(10)}
print(res, type(res))
res = {i for i in range(10) if i != 2}
print(res, type(res))
s = set() # 空集合需要用关键字声明
d = {} # 默认是字典
3. 匿名函数
(lambda x,y:print((x+10000)/y))(1,2)
# 这个匿名函数实际上的效果等于
def demo(x,y):
return print((x+10000)/y)
demo(1,2)
#max函数默认比较字典时,只会比较key,如果想比较value用匿名函数效果很好
#eg:
info = {
'Aason':1,
'Jacob':2,
'zark':3,
'berk':4
}
res = max(info,key=lambda key:info[key])
print(res)
4. 常用函数
# 1. map(映射)
res = lambda x,y:x+100+y**2
res1 = list(map(res,[1,2],[3,4]))
print(res1)
# 2. zip(压缩)
l1 = [11, 22, 33, 44]
l2 = ['jason','kevin','tony','oscar']
l3 = [1,2,3,4]
l4 = [55,66,77,88]
res = zip(l1,l2,l3,l4)
print(list(res))
# 3. filter(筛选)
l1 = [1,23,41,124,14,141,56,15,151,251]
res = filter(lambda x:x>99,l1)
print(list(res))
# 4. reduce
from functools import reduce
l1 = [11, 22, 33]
res = reduce(lambda x,y:x*y,l1)
print(res)
#abs() 获取绝对值(不考虑正负号)
print(abs(-123))
print(abs(123))
# 2.all()与any()
l1 = [0, 0, 1, 0, True]
print(all(l1)) # False 数据集中必须所有的元素对应的布尔值为True返回的结果才是True
print(any(l1)) # True 数据集中只要所有的元素对应的布尔值有一个为True 返回的结果就是True
# 3.bin() oct() hex() 产生对应的进制数
print(bin(100)) # 二进制
print(oct(100)) # 八进制
print(hex(100)) # 十六进制
# 4.bytes() 类型转换
s = '你好啊 hello world!'
print(s.encode('utf8')) # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
print(bytes(s, 'utf8')) # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
s1 = '天黑了 抓紧进屋吧!!!'
# 编码
res = bytes(s1, 'utf8')
print(res)
# 解码
res1 = str(res, 'utf8')
print(res1)
name = 'jason'
def index():pass
print(callable(name)) # False 变量名不能加括号调用
print(callable(index)) # True 函数名可以加括号调用
# 6.chr()、ord() 字符与数字的对应转换
print(chr(65)) # A 根据数字转字符 依据ASCII码
print(ord('A')) # 65 根据字符转数字 依据ASCII码
# 7.dir() 返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
print(dir(123))
print(dir('jason'))
# 8.divmod()
print(divmod(249,25)) # (9, 24)
def get_page_num(total_num,page_num): # 后面django分页器使用
more,others = divmod(total_num, page_num)
if others:
more += 1
print('需要%s页'%more)
get_page_num(1000,30)
# 9.enumerate() 枚举
name_list = ['jason', 'kevin', 'oscar', 'tony']
for i,j in enumerate(name_list):
print(i,j) # i类似于是计数 默认从0开始
for i,j in enumerate(name_list,start=1):
print(i,j) # 还可以控制起始位置
# 10.eval() exec() 识别字符串中的python代码 使用频率很低
print('print("有点饿了")')
eval('print("有点饿了111")')
exec('print("有点饿了222")')
# eval(res) 只能识别简单逻辑的python代码 返回结果
# exec(res) 能够识别具有与一定逻辑的python代码 不返回结果