内置函数、匿名函数、递归函数、二分查找

本文介绍了Python中的几个内置函数,如sorted(), map(), max(), min(), filter()等的使用方法,并探讨了lambda匿名函数、递归函数的概念及应用实例。此外,还详细解释了二分查找的不同实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、内置函数sorted()、map()、max()、min()、filter()

1、sorted()

sorted(iterable,key,reverse) 用于排序

key:排序的规则

reverse:默认是升序排序、reverse=True 是降序排列

1 l=["aaaaa","bcxzcjkjk","suagfu","a","sdsal","sada"]
2 def func(x):
3     return len(x)
4 f=sorted(l,key=func)
5 print(f)

 

运行流程:把可迭代对象的每一个元素赋值给key函数来执行,根据函数的返回值来进行排序

2、filter(function,iterable)过滤

将可迭代对象中的元素赋值给函数,根据条件筛选,返回True留下,返回False过滤

1 lst=["张丽丽","张帅","王华"]
2 f=filter(lambda el:el[0]!="",lst)
3 print(list(f))

 

3、map(function,iterable)映射函数

将可迭代对象中的元素赋值给函数,返回值就是处理结果

f=map(lambda x:x**2,[0,1,2,3,4])
print(f)
print(list(f))

二、匿名函数
1、lambda 匿名函数

  lambda 参数: 返回值(函数名统一都叫lambda)

f=lambda x:x**2
f(n)

传值计算参数的平方
三、递归函数()

1、持续打印输出,自己调用自己

1 def func():
2     print("这是一个递归函数")
3     func()
4 func()

2、输出某一个磁盘下的文件夹的所有文件

 1 import os
 2 def func(filepath, n): # d:/sylar/
 3     # 1,打开这个文件夹
 4     files = os.listdir(filepath)
 5     # 2. 拿到每一个文件名
 6     for file in files:  # 文件名
 7         # 3. 获取到路径
 8         f_d = os.path.join(filepath, file) # d:/sylar/文件名/
 9         # 4. 判断是否是文件夹
10         if os.path.isdir(f_d):
11             # 5. 如果是文件夹. 继续再来一遍
12             print("\t"*n, file,":") # 打印文件名
13             func(f_d, n + 1)
14         else:   #  不是文件夹. 普通文件
15             print("\t"*n, file)
16 
17 func("d:/sylar",0)

 四、二分查找

查找列表的某个值

方法一

1 lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789 ]
2 n = 79
3 
4 for el in lst:
5     if el == n: # O(1)
6         print("找到了")
7         break
8 else:
9     print("没有")

方法二

 1 lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
 2 def func(n, left, right):
 3     if left <= right: # 边界
 4         print("哈哈")
 5         mid = (left + right)//2
 6         if n > lst[mid]:
 7             left = mid + 1
 8             return func(n, left, right) # 递归  递归的入口
 9         elif n < lst[mid]:
10             right = mid - 1
11             # 深坑. 函数的返回值返回给调用者
12             return func(n, left, right)    # 递归
13         elif n == lst[mid]:
14             print("找到了")
15             return mid
16             # return  # 通过return返回. 终止递归
17     else:
18         print("没有这个数") # 递归的出口
19         return -1 # 1, 索引+ 2, 什么都不返回, None
20 # 找66, 左边界:0,  右边界是:len(lst) - 1
21 ret = func(70, 0, len(lst) - 1)
22 print(ret) # 不是None

方法三

 1 lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
 2 
 3 n = 88
 4 #
 5 left = 0
 6 right = len(lst)-1
 7 
 8 while left <= right: # 边界, 当右边比左边还小的时候退出循环
 9     mid = (left + right)//2 # 必须是整除. 因为索引没有小数
10     if lst[mid] > n:
11         right = mid - 1
12     if lst[mid] < n:
13         left = mid + 1
14     if lst[mid] == n:
15         print("找到了这个数")
16         break
17 else:
18     print("没有这个数")

 注:map() zip() filter() 返回的是迭代对象 sorted() 返回的是列表

转载于:https://www.cnblogs.com/liaopeng123/p/9481807.html

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值