Python学习日记day_02

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代码   不返回结果

你可能感兴趣的:(Python学习日记day_02)