python学习笔记15 匿名函数,递归等

lamda 匿名函数

lambda 参数: 返回值

def  func(n):

    return n*n 

a = lamda x: x*x

.__name__ 查看函数名

1 函数参数可以有多个,用逗号隔开

2 匿名函数只能写一行,逻辑结束后直接返回数据,不能完成复杂参数

3 返回值和正常的函数一样,可以是任意数据类型

 

sorted()  对所有可迭代的对象进行排序操作。

sorted(iterable, key=None, reverse=False) 
  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。(这个说明听起来比较绕,key其实就是排序规则,通常用函数代替,作用过程是通过将可迭代对象的元素分别代入函数得到对应返回值,然后以此返回值为排序维度进行排序)
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
lst =   [
        {'id':1,'name':'alex','age':28},
        {'id':2,'name':'wusir','age':38},
        {'id':3, 'name': 'godness', 'age': 21},
        {'id':4, 'name': 'ritian', 'age': 58},
        ]

l1 = sorted(lst, key=lambda dic:dic['age'])
print(l1)

 

filter() 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

filter(function, iterable)

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

lst = [1,2,3,4,5,6,7,8,9]
print(list(filter(lambda i:i%2==1,lst)))

 

map() 会根据提供的函数对指定序列做映射。

map(function, iterable, ...)

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

lst1 = [1,2,3,4,56,7]
lst2 = [66,456,98,345,654,8,87]
print(list(map(lambda x,y:x+y,lst1,lst2)))

 

递归 

def func(i):
    if i <100:
        print('我是谁,我在哪里?{}'.format(i))
    func(i+1)
func(1)

python官网称递归最大深度为1000,但是永远到不了1000

sys.setrecursionlimit(递归数) 调整递归最大深度

递归最大用处是遍历树形结构

os.listdir(path) 用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中,只支持在 Unix, Windows 下使用。查看文件夹中的文件 返回值为可迭代对象iterable。

os.path.isdir(path) 判断路径是否为目录

os.path.join(path1[, path2[, ...]]) 把目录和文件名合成一个路径 通常用于在遍历时将相对路径变为绝对路径,才能进行迭代遍历,否则从第2层迭代开始的迭代函数获得的参数是相对路径,无法向下迭代.

# 遍历树形结构
import os                                               #引入os模块
filepath = 'D:\sylar\python_workspace'                  #获得初始文件夹地址

def read(filepath,n):  #打开文件夹
    dir_fat = os.listdir(filepath)                      #获得下一层文件/文件夹列表
    for dir_son in dir_fat:                             #对本层开始遍历
        dir_son_full = os.path.join(filepath,dir_son)   #将相对路径转化为绝对路径
        if os.path.isdir(dir_son_full):                 #判断是否为文件夹
            print('-->'*n,dir_son)                      #是文件夹的话迭代调用本程序
            read(dir_son_full,n+1)                      #并打印本文件夹名
        else:
            print('-->'*n,dir_son)                      #不是文件夹的话打印本文件名

read(filepath,0)                                        #调用函数,开始遍历

 

二分法

拿有序序列的中间值跟目标值比较,判断目标值是在左还是在右,并对序列进行二分缩小查询范围. 二分法查询效率很高

lst1 = [12,23,34,45,56,67,78,89,100,123,234,345,456,567,678,789,890]
n = 567

def num_search(lst1_left,lst1_right,n):
    lst1_middle = (lst1_left+lst1_right)//2
    if n < lst1[lst1_middle]:
        lst1_right = lst1_middle-1
    elif n >lst1[lst1_middle]:
        lst1_left = lst1_middle+1
    else:
        return lst1_middle
    return num_search(lst1_left,lst1_right,n)

print(num_search(0,len(lst1)-1,n))
print(lst1[num_search(0,len(lst1)-1,n)])

 

 

 

 

 

 

 

 

 

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值