首页 > 编程语言 >进入python的世界_day14_python基础——算法、三元表达式、生成式、匿名函数

进入python的世界_day14_python基础——算法、三元表达式、生成式、匿名函数

时间:2022-10-13 23:22:25浏览次数:50  
标签:name python 生成式 list 列表 day14 l1 print 函数

一、算法

1.介绍

​ 算法是通过数学模型运算得到某些数据的过程,在python中通过与代码相结合,可以在特定场景下很方便的解决问题

2.应用场景

​ 很广,大数据推广就是利用算法做的

3.二分法——一个很基础的算法

# 别学我写中文,很Low的,我只是想明了一点,英语太水了
# 比如说我手里一个列表,想找到一个指定的值,就比如说拿888吧
l1 = [1232,564,989,1,53,63,888,6,3,99,153]
目标数据 = 888
# 确实可以用for循环之类的法子,今天我们用二分法试试,就是我先拿一半找,如果没找到,我再拿一半找
————————————————————————————————————
l1.sort()  # 复习一下列表排序内置方法
l2 = l1[1:5] # 复习一下列表切片 切好赋值给一个变量名接收
—————————————————————————————————————
middle_index = len(l1) //2 # 搞到l1表数据位置的一半的那个值的索引值
# 然后就拿这个索引位置的值和目标值比大小呗
# 先加一个结束条件
if len(list_1) == 0:  # l1都被分完了都找不到
        print('不行哦,找不到')
if 目标数据 > l1[middle_index]: # 那前半段列表就可以丢了
    右边_l1 = l1[middle_index + 1 :] # 切片中间下一位置到列表末尾
    return func(右边_l1, 目标数据)    # 然后循环
elif 目标数据 < l1[middle_index]: # 那后半段可以丢了
    左边_l1 = l1[:middle_index + 1]	# 切片开头到中间
    return func(左边_l1, 目标数据)    # 然后循环
else:
    print(f'找到了您要的{}')
————————————————————————————————————
	把上面功能封装成一个函数,以后想完成类似的功能都可以直接用这个函数,传参就行了
def func(l1, 目标数据):
	if len(list_1) == 0:  # l1都被分完了都找不到
        	print('不行哦,找不到')
	if 目标数据 > l1[middle_index]: # 那前半段列表就可以丢了
    	右边_l1 = l1[middle_index + 1 :] # 切片中间下一位置到列表末尾
    	return func(右边_l1, 目标数据)    # 然后循环
	elif 目标数据 < l1[middle_index]: # 那后半段可以丢了
    	左边_l1 = l1[:middle_index + 1]	# 切片开头到中间
    	return func(左边_l1, 目标数据)    # 然后循环
	else:
    	print(f'找到了您要的{}')
func(l1, 888)

二、三元表达式

1.介绍

​ 用于二选一的情况下,简单的判断简单的代码,如果过于复杂不推荐用

尽量别嵌套使用。

2.用法

​ 拿一个变量名接收 条件成立时返回的值 if 条件 else 条件不成立时要返回的值

def func(x, y):
    if x > y:
        return x
    else:
        return y
res = func(666, 999)
print(res) 
>>>
999 
# 这是一个简单的对比函数,一个条件成立输出啥啥啥个条件不成立输出啥啥啥
——————————————————————————————
# 如果用三元

res = x if x > y else y # 这就设定好了,如果要用,在三元上方传参即可
_______________________________
x = 666
y = 999

res = x if x > y else y
print(res)
>>>
999

三、各种生成式

1.列表生成式

​ >>>当你想对列表里面所有数据值操作同样的事可以用, 也可以单独拿一个值,对这个值搞点事情后输出来 ————支持for if range()

​ 新列表 = [想要的功能 for name in 老列表]

​ 运行是for循环的代码先执行,然后得到的值和前面功能结合

# 有一个列表,给里面的每个值+1 
name_list = [1,33,44,666,556,245,888]
——————————————————————————————
# 如果用for循环
new_name_list = []
for i in name_list:
    new_name_list.append(i + 1)
print(new_name_list)
——————————————————————————————
# 如果用列表生成式
new_name_list = [i + 1 for i in name_list]
print(new_name_list)
———————————————————————————————
# 如果我想给666+1呢,其他不加
new_name_list = [i + 1 for i in name_list if i == 666]
print(new_name_list)

2.字典生成式

  • 拓展 :enumerate ——一个内置函数

    ​ 将一个可遍历的数据对象(如列表、元组、字典和字符串)组合成一个索引序列,同时列出数据下标和数据(索引 值),一般配合for循环使用。

    ​ 语法:enumerate(对象, 下标起始位置(默认0))

l1 = ['杰克', 28, '泰坦驾驶员']
t = list(enumerate(l1))
print(t)
>>>
[(0, '杰克'), (1, 28), (2, '泰坦驾驶员')]
____________________________________
用字典生成式生成一个字典
dict  = {i:k for i,k in enumerate(l1, 1)}
print(dict)
info = ['name','age','gender']

dic = {key:666 for key in info}
print(dic)

3.集合生成式

info = ['name', 'age', 'city']

set1 = {key for key in info}
print(set1, type(set1))
>>>
{'age', 'city', 'name'} <class 'set'>

4.元组生成式

​ 没有,只有生成器

四、匿名函数

1.介绍

​ 没有名字的函数,关键字lambda

​ 用来顶替掉一些简单的函数(简化代码)

2.用法:

​ lambda 形参:返回值

等价于

def 函数名(参数):
	函数体
    return 返回值

​ 针对能比较简单,又不得不用函数的场景

​ 匿名函数一般不单独使用,需要配合其他函数一起用

3.一些匿名函数

1.map()映射

​ 语法:map(想干嘛的函数名, 可迭代对象)

l1 = [11, 22, 33, 44, 55, 66]
def func(a):
  return a + 1
res = map(lambda x: x + 100, l1)
print(list(res))
>>>
[111, 122, 133, 144, 155, 166]

2.max mix

把第二个例子再梳理一次,说说顺序

3.reduce(已经被python内置函数移除掉了,要进模块才能用)

不管传多个,根据你后面写的功能后 只返一个

reduce默认有一个数据值0

标签:name,python,生成式,list,列表,day14,l1,print,函数
From: https://www.cnblogs.com/wznn125ml/p/16790095.html

相关文章

  • Python学习路程——Day14
    Python学习路程——Day14算法简介1、什么是算法''' 算法就是解决问题的有效方法,并不是所有的算法都很高效、也不是所有的算法都合格。'''2、算法应用场景''' 推荐......
  • python 编码规范起源:PEP8 编码规范中文版
     PEP:8标题:Python代码的样式指南版:c451868df657最后修改:​​2016-06-0810:43:53-0400(2016年6月8日星期三)​​作者:GuidovanRossum<guidoatpython.org>,BarryWarsaw<b......
  • python re 模块及正则表达式调用认识(1)
           最近用到正则表达式,虽然看了学习了一些,但是不成体系,没有深刻认识,所以来看官方文档学习下,进行一个半汉化的翻译吧,网上查了很多都不是特别全面,要不就不是纯粹......
  • python编码类型转换及字符集探讨
    一直遇到python编码的问题。常常抓取的网页数据信息,邮件收发信息,涉及到文字处理的,都时不时出现编码的问题。终于,觉得有必要认真了解下这个编码过程和出现对应的问题如何解决......
  • 关于python class
    1、class的定义classX(Y)"MakeaclassnamedXthatis-aY."classX(object):def__init__(self,J)"classXhas-a__init__thattakesselfandJpar......
  • python算法简介与各种生成式
    今日内容概要算法简介及二分法三元表达式各种生成式匿名函数重要内置函数常见内置函数今日内容详细算法简介及二分法1.什么是算法 算法就是解决问题的有校......
  • python函数及算法
    算法二分法二分算法图什么是算法?​ 算法是高效解决问题的办法。需求:有一个按照从小到大顺序排列的数字列表,查找某一个数字#定义一个无序的列表nums=[3,4,5,67,......
  • python爬虫爬取国家科技报告服务系统数据,共计30余万条
    python爬虫爬取国家科技报告服务系统数据,共计30余万条按学科分类【中图分类】共计三十余万条科技报告数据爬取的网址:​​https://www.nstrs.cn/kjbg/navigation​​!!!分析网站......
  • python使用xml.dom.minidom写xml节点属性会自动排序问题解决
    1.背景及问题一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:<stringtypename="time_type"length......
  • 算法 生成式 函数内置
    今日内容概要算法简介及二分法三元表达式各种生成制匿名函数重要内置函数常见内置函数算法简介及二分法1.什么算法? 解决问题的有效方法,不是所有的算法都是高效......