一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
1、a,*args, ** kwargs 的区别
首先这三个顺序是肯定不会改的,必须是这个顺序(a,args,* kwargs) a表示一个参数,可以是字符串,也可以是数字,也可以是列表等等, *args表示是一个元组, ** kwargs表示是一个字段
def function(a,*args,**kwargs):
print(type(a))
print(type(args))
print(type(kwargs))
function(1,1,1)
运行上边代码,执行结果会<class 'int'>,<class 'tuple'>,<class 'dict'>显示这三个参数属于那种类型。
def function(a,*args,**kwargs):
print(type(a))
print(type(args))
print(type(kwargs))
print(a)
print(args)
print(kwargs)
function(2,3,4,5,6,c=1,b=2)
此时运行结果:<class 'int'>,<class 'tuple'>,<class 'dict'> 2:表示参数a的值, (3, 4, 5, 6): 表示*args的值 {'c': 1, 'b': 2}:表示** kwargs的值。
2、return和yield的区别
return阻断循环,yield不阻断循环。
def func1():
for i in range(1,5):
return i # 阻断循环
def func2():
for i in range(1,5):
yield i # 生成器,不阻断循环,而是把每个结果进行逐一返回
print(func1())
print(func2())
yi = func2()
for i in yi:
print(i)
此时return就直接返回1,不进行循环了,但是yield会返回一个生成器,不阻断循环,循环的时候,每次都会打印生成器的值,逐一返回。
3、多种推导式实现
根据一个列表创建一个新的列表,用一行代码
lambda表达式的推导式
# 把下边的列表中的所有值都平方得到一个新的列表
list1 = [1,3,4,5,6,2]
result = map(lambda x:x*x ,list1)
print(list(result))
运行结果把result转化成列表形式就是[1, 9, 16, 25, 36, 4]
推导式
# 把下边的列表中的所有值都平方得到一个新的列表
list1 = [1,3,4,5,6,2]
list2 = [i *i for i in list1]
print(list2)
运行结果把result转化成列表形式就是[1, 9, 16, 25, 36, 4]
字典推导式
# 将下边的字典中所有的key,生成一个列表
dict1 = {"key":1,"key2":2,"key3":3}
keys = [key for key,value in dict1.items()]
print(keys)
此时运行结果为['key', 'key2', 'key3'],把字典dict中多有的key生成一个新的列表。
4、冒泡排序
相邻两个数字进行比较,大的向下沉,最后一个元素是最大的。时间复杂度是O(n^2)
list1=[2,3,4,23,23,13,4,1,44,3,245,25,78,588,46]
def bubble_sort(list1):
for j in range(len(list1)):
for i in range(j,len(list1)):
if list1[j]> list1[i]:
list1[j],list1[i] = list1[i],list1[j]
return list1
print(bubble_sort(list1))
运行结果为[1, 2, 3, 3, 4, 4, 13, 23, 23, 25, 44, 46, 78, 245, 588]。按照从小到大排序,返回原列表。
5、快速排序
列表中取出第一个元素,作为标准,把比第一个元素小的都放在左侧,把比第一个元素大的都放在右侧。时间复杂度O(nlog2n)
list1=[2,3,4,23,23,13,4,1,44,3,245,25,78,588,46]
def quick_sort(list):
if list==[]:
return []
else:
frist = list[0]
# 推导式实现
less = quick_sort([i for i in list[1:] if i < frist])
more = quick_sort([m for m in list[1:] if m >= frist])
return less + [frist]+more
print(quick_sort(list1))
运行结果为[1, 2, 3, 3, 4, 4, 13, 23, 23, 25, 44, 46, 78, 245, 588],将列表list1的第一个元素2取出来,作为一个标准,然后让其他的元素跟2进行对比,比2大的放在右侧,比2小的放在左侧,最后组合到一起,返回给一组个的列表。