一、三元表达式
三元表达式:
1.当x大的时候返回x,当y大的时候返回y
2.当某个条件成立做一件事,不成立做另一件事
三元表达式固定表达式:
- 值(1) if 条件 else 值(2)
条件成立 值(1)
条件不成立 值(2)
2.三元表达式只推荐两种选择的情况下(是或非)
例子1:
用普通的方法比较两个值的大小:6行代码
def my_max(x, y):
if x > y:
return print(x)
else:
return print(y)
my_max(10, 20)
例子1(三元表达式):关键代码1行
x = 1
y = 2
res = x if x > y else y # 如果if后面的条件成立返回if前面的值,否则返回后面的值
print(res)
例子2:收费免费
is_free = input('请输入是否免费(y/n)>>>:')
is_free = '免费' if is_free == 'y' else '收费'
print(is_free)
二、算法——二分法
算法:解决问题的高效率的方法
1.找元素是否在一个列表中
普通方法 for i in k :
k = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in k:
if num == i:
print("找到了:%s" % i)
2.二分法:
1.容器中的数字必须有大小顺序
2.依次和中间的数进行比较大小,小于取左,大于取右
排序: sort()升序,sort(reverse=Ture)降序,reverse()反转,逆序排列
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l.sort() # 重新升序排序
def get_num(l, num):
# 取列表中间数索引位置
num_middle = len(l) // 2
# 这个数不在列表中,切到后面就是空列表,空列表就直接返回
if not l:
return print("列表中找不到", num)
print(l) # 打印每次切片后的列表
# 判断大小
if num > l[num_middle]:
# 切片右半部
right_num = l[num_middle + 1:]
get_num(right_num, num)
elif num < l[num_middle]:
# 切去左半部
left_num = l[:num_middle]
get_num(left_num, num)
else:
print("列表中找到了", num)
get_num(l, 9)
三、列表生成式
m = ['jeff','jiamin','nick','xiaomin]
给列表添加后缀:_sb
普通方法:for 循环遍历打印append方法添加
列表生成式:['%s_sb'%name for name in m]
例子1:列表元素添加后缀
第一种:普通for循环方法
m = ['jeff','jiamin','nick','xiaoming']
m1 = []
for name in m:
m1.append('%s_sb'%name)
print(m1)
第二种:列表生成式方法
m = ['jeff','jiamin','nick','xiaoming']
res = ['%s_sb'%name for name in m]
print(res)
例子2:从列表中帅选带有_sb的元素
k = ['jeff_sb', 'jiamin_sb', 'nick_sb', 'xiaoming_sb','xiaowang_NB']
res = [name for name in k if name.endswith("_sb")] #endswith:字符串结束位置检测
print(res)
四、字典生成式
需求:把两个列表变成一个字典
m1 = ['name', 'password', 'age', 'gender']
m2 = ['jeff', '123', '18', '男']
1.普通for循环方法
m1 = ['name', 'password', 'age', 'gender']
m2 = ['jeff', '123', '18', '男']
d = {}
for i, j in enumerate(m1): # enumerate方法查看元素的索引和值,默认0开始
print(i, j) # 查看m1的索引和值,m1索引=i,m1的值=j
d[j] = m2[i]
print(d)
2.字典生成式:
d = {i: j for i, j in enumerate(m2)}
print(d)
加 if 判断:去除 j=123
d = {i: j for i, j in enumerate(m2) if j != '123'}
print(d)
五、集合生成式
例子:0-9并去除4
res = {i for i in range(10) if i != 4}
print(res)