三元表达式
可以将if... else .. 分支变成一行
语法:
条件成立返回左边的值 if 判断条件 else 条件不成立返回右边的值
#if 判断条件
# 执行
#else:
# 执行
#if判断语句
numb1 = 2
numb2 = 3
if numb1 > numb2:
print(numb1)
else:
print(numb2)
#三元表达式
numb1 = 1
numb2 = 2
numb1 if numb1 >numb2 else numb2
列表生成式
可以一行实现生成列表
语法:
list = [取出的每一个值,任意值 for 可迭代对象中取出的每个值 in 可迭代对象]
for 的右边是循环次数,并且可以取出可迭代对象中的每一个值
for 的左边可以为当前列表添加值
list =[ 值 for 可迭代对象中取出的每一个值 in 可迭代对象]
#将list1中的值,依次取出,添加到new_list中
list1 = [1, 2, 3, 4]
new_list = []
for i in list1:
new_list.append(i)
print(new_list)
生成器表达式
就是生成器生成式
---列表表达式: 数据量小时采用
[list for line in range(1,6)] -----> [1, 2, 3, 4, 5 ]
优点: 可以依赖索引取值,取值方便
缺点:浪费资源
---生成器表达式: 数据量大时采用
() ----> 返回生成器
(line for line in range(1,6)) ---> g生成器(1, 2, 3, 4, 5)
优点: 节省资源
缺点:取值不方便
#生成一个有1000个值的生成器
g = (line for line in range(1,1001))
print(g)
#列表生成式实现
list1 = [line for line in range(1,1001)]
print(list1)
匿名函数
没有名字的函数
:左边是参数,:右边是返回值
lambda :
注意: 由于没有名字
匿名函数需要一次性使用
匿名函数单独使用毫无意义,需要配合内置函数一起使用才有意义
内置函数
内置函数:range() 、 print()、len()
python 内部提供的内置方法:
max、 min、sorted、map、 filter
max 求最大值 min 求最小值
list1 = [1, 2, 3, 4, 5]
max 内部会将list1 中的通过for 取出每一个值,并进行判断
print(max(list1))
dict1 = {
'tank': 1000,
'egon': 500,
'sean': 200,
'jason': 50
}
print(min(dict1, key=lambda x : dict1[x]))
# sorted 排序 默认升序 reverse: 反转 reverse 默认 False
"""
map : 映射
map(函数地址,可迭代对象) ---> map 对象
map 会将可迭代对象中的每一个值进行修改,然后映射一个 map对象
可以再将 map 对象转换成列表/元祖
注意:只能转换一次
reduce : 合并
reduce(函数地址,可迭代对象,初始值)
reduce中,初始值默认为0
filter: 过滤
filter(函数地址,可迭代对象)
"""
map 映射 (使用方法)
name_list = ['egon', 'jason', 'sean', 'tank']
map_obj = map(lambda name: name + '喜欢吃生蚝' if name == 'tank' else name + 'dsb', name_list)
print(map_obj)
print(list(map_obj))
打印结果:
<map object at 0x00000182D780E488>
['egondsb', 'jasondsb', 'seandsb', 'tank喜欢吃生蚝']
reduce 合并 (用法)
#注意,reduce 无法单独使用 需要先调用
from functools import reduce
每次从可迭代对象中获取两个值进行合并
reduce(lambda x, y : x + y, rangr(1, 101), 0)
需求:
求1--100的和
普通:
init = 0
for i in rang(1,100):
init += i
print(init)
reduce :
from functools import reduce
res = reduce(lambda x, y : x + y, range(1,101), 0)
print(res)
filter 过滤 (用法)
name_list = ['egon_dsb', 'sean_dsb', 'jason_dsb', 'tank']
filter_obj = filter(lambda name: name.endswith('_dsb'), name_list)
print(filter_obj)
print(list(filter_obj))