【Python基础之函数:二分法、三元表达式、生成/推导式、匿名函数、内置函数】

简介: 【Python基础之函数:二分法、三元表达式、生成/推导式、匿名函数、内置函数】

一、算法简介之二分法


1、什么是算法


算法是指数学运算,在python中算法是指数学运算和代码相结合,能够高效的解决一些问题


2、算法的应用场景


算法的应用场景非常广阔,在我们日常中的网购、抖音、拍照识别都是通过算法完成


3、二分法


什么是二分法:二分法是一直最基础的算法,通过将数据分割、比对来提高工作效率


缺陷:针对开头或结尾的数据,查找效率很低


代码用法:

# 设置一段列表
list_1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 202, 303, 404, 505, 606, 707, 808, 909]
# 定义想要查找的数据指
target_num = 505
# 6、使用递归函数循环重复查找
def func(list_1, target_num):
    # 7、添加结束条件
    if len(list_1) == 0:
        print('这里没有你要的值')
    # 1、获取列表中间索引值
    middle_index = len(list_1) // 2
    # 2、比较目标数据值与列表中间数据值
    if target_num > list_1[middle_index]:
        # 3、切片保留列表右边
        r_list_1 = list_1[middle_index + 1:]
        # 针对目标值右边继续循环
        return func(r_list_1, target_num)
    # 4、继续比较目标数据值
    elif target_num < list_1[middle_index]:
        # 5、保留列表左侧
        l_list_1 = list_1[:middle_index]
        # 针对目标值左边边继续循环
        return func(l_list_1, target_num)
    # 5、当以上条件都不成立则说明目标数据中等于索引值
    elif middle_index == len(list_1) // 2:
        print(f'找到了{target_num}')
func(list_1, 505
     )
--------------------------------------------------------------
找到了 505


二、三元表达式


1、简介及用法


三元表达式是指,当结果是二选一的情况下我们可以做到优化代码使代码简写,当有多个条件和嵌套时不推荐使用

代码用法:

1.常规用法
name = 'kangkang'
if name == 'kangkang':
    print('三好学生')
else:
  print('普通学生')
2.三元表达式用法
name = 'kangkang'
res = '三好学生' if name = 'kangkang' else '普通学生'
print(res)


三、各种生成式


可以更加方便、快捷的对列表、字典、集合内数据值进行修改


1、列表生成式


可搭配for 、if 、range()等多种内置方法快速便捷生成需要的列表

# 设置一段列表
name_list = ['zhangshan', 'lisi', 'wangwu', 'zhangermazi']
# 条件:给上方列表内所有数据加上'YYDS'
# 1、常规方式 for循环
new_name_list = []
for name in name_list:
    new_name_list.append(name + 'YYDS')
print(new_name_list)
-------------------------------------------------------------
['zhangshanYYDS', 'lisiYYDS', 'wangwuYYDS', 'zhangermaziYYDS']
# 2、列表生成式用法
new_name_list = [name + 'YYDS' for name in name_list]
print(new_name_list)
------------------------------------------------------------
['zhangshanYYDS', 'lisiYYDS', 'wangwuYYDS', 'zhangermaziYYDS']
'''
原理: 
    # 普通的生成式
    [表达式 for 变量 in 旧列表]
    # 加条件的生成式
    [表达式 for 变量 in 旧列表 if 条件]
    # if...else条件的生成式
    [表达式 if 条件1 else 条件2for 变量 in 旧列表]
'''

进阶用法一:

new_name_list = [name + 'YYDS' for name in name_list if name == 'zhangshan']
print(new_name_list)
-----------------------------------------------------------
['zhangshanYYDS']
'''
原理:
  在基础用法上添加判断,在遍历后方添加条件,通过后进行修改数据值
'''

进阶用法二:

new_name_list = ['YYDS' if name == 'zhangshan' else 'DZD' for name in name_list if name != 'wangwu']
print(new_name_list)
-------------------------------------------------------------
['YYDS', 'DZD', 'DZD']
'''
原理:
  将相对于应位置,按条件更换数据值
'''


2、字典生成式


搭配enumerate使用

# 字典生成式
str1 = '开开心心'
dict1 = {i: j for i, j in enumerate('开开心心', start= 10)}
print(dict1)
------------------------------------------------------------
{10: '开', 11: '开', 12: '心', 13: '心'}

键值对互换

d1 = {'a':'A', 'b':'B', 'c':'C'}
d2 = {v:k for k, v in d1.items()}
print(d2 )
-------------------------------------------------------------
{'A': 'a', 'B': 'b', 'C': 'c'}


3、集合生成式


代码用法:#与列表生成式基本相同

# 普通的生成式
{表达式 for 变量 in 旧列表}
# 加条件的生成式
{表达式 for 变量 in 旧列表 if 条件}
# if...else条件的生成式
{表达式 if 条件1 else 条件2for 变量 in 旧列表}


四、匿名函数


1、什么是匿名函数


匿名函数是指没有函数名的函数,通常搭配在函数内或条件使用


2、匿名函数用法


关键字lambda

语法结构

lambda 形参:返回值

使用场景

lambda a,b:a+b

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


五、常见内置函数


1、map()


代码用法:
  map(func,iterable)
  '''
  func为函数名,可为lambda匿名函数,iterable为可迭代对象
   此函数会将可迭代对象中的每一位元素作为参数传递到func中,并将func的计算结果加入到新列表内,map()返回的是一个包含所有结果的新列表。
  '''
    l1 = [1, 2, 3, 4, 5]
    def func(a):
         return a + 1
    res = map(lambda x:x+1, l1)
    print(list(res))
--------------------------------------------------------------
 [2, 3, 4, 5, 6]


2、max()、min()


代码用法:
  max(*args, key=None)
    '''
    *args作为可迭代对象,key可为lambd匿名函数,可返回最大值
    '''


3、reduce


代码用法:
   # 插入模块
    from functools import reduce
    reduce(function, sequence, initial=_initial_missing)
    '''
    function可为lambd函数,可为迭代对象进行基础运算
    '''


相关文章
|
7天前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
30天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
1月前
|
存储 数据安全/隐私保护 索引
|
25天前
|
Python
探索Python中的列表推导式
【10月更文挑战第20天】在编程世界里,时间就是一切。Python的列表推导式是节约时间、简化代码的一大利器。本文将带你深入理解并有效利用这一强大工具,从基础到高级用法,让你的代码更加简洁高效。
|
21天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
23天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
26天前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
27 4
|
24天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
27天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
19 1
|
29天前
|
数据处理 开发者 Python
Python中的列表推导式:一种优雅的代码简化技巧####
【10月更文挑战第15天】 本文将深入浅出地探讨Python中列表推导式的使用,这是一种强大且简洁的语法结构,用于从现有列表生成新列表。通过具体示例和对比传统循环方法,我们将揭示列表推导式如何提高代码的可读性和执行效率,同时保持语言的简洁性。无论你是Python初学者还是有经验的开发者,掌握这一技能都将使你的编程之旅更加顺畅。 ####
35 1