Task06_函数_lambda

关于Sorted 与 sort:
sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
语法

sorted 语法:

sorted(iterable, cmp=None, key=None, reverse=False)

参数说明:

iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
a = [[6,5],[3,7],[2,8]]
print(sorted(a, key= lambda x: x[0]))

在学习函数的过程中记录一下print函数的的三种方式。个人推荐的方式print(f’{name},{age}’)的方式。这种方式

def name(name, age = 8):
    print('名字:%s, 年龄:%s'%(name,age))
    print('名字:{0}, 年龄:{1}'.format(name,age))
    print(f'名字:{name}, 年龄:{age}')
name('Ada',age=28)

关于for 循环与递归。
for 循环,可以理解为针对单一循环的需求。
递归:可以理解为,无线的for 循环,而且是自动的。递归的最大好处是可以自己调用自己。
下面的代码可以很好的体现递归的优势。
需求背景,查找指定文件夹下面,指定的后缀文件(如.bmp, .py), 并输出每个文件的绝对路径。如果用for循环,可能会是一个很大的循环。

import os
import csv
import codecs
import xlwt

__all__=["FileNameExtract_To_txt","FileNameExtract_To_csv","FileNameExtract_To_xls"]
__filelist = []   #这里需要一个全局列表去记录查找到的文件和相应的绝对路径。
__file_extension_selection = []


def _file_extension(file_name):
    return os.path.splitext(file_name)[1]


def _getAllfiles(Input_Path):
    if not os.path.exists(Input_Path):
        print("Your input path" + Input_Path + "is not exist")
        return
    '''file_extension_check means to check the file is image or not'''
    filenames = os.listdir(Input_Path)
    for file in filenames:
        fileabspath = os.path.join(Input_Path, file)
        if os.path.isdir(fileabspath):
            _getAllfiles(fileabspath   ##这里就额是递归的调用。
        else:
            if len(__file_extension_selection):
                if _file_extension(file) in __file_extension_selection:
                    __filelist.append(fileabspath)
            else:
                __filelist.append(fileabspath)
    return __filelist


def FileNameExtract_To_txt(Input_Path='', Saved_path_file_name='',
                           file_extension_selection=[]):  # filename为写入CSV文件的路径,data为要写入数据列表.
    for item in file_extension_selection:
        __file_extension_selection.append(item)
    if not os.path.exists(Input_Path):
        print("Your input path" + Input_Path + "is not exist")
        return
    data = _getAllfiles(Input_Path)
    file = open(Saved_path_file_name, 'w')
    for i in range(len(data)):
        s = str(data[i]).replace('[', '').replace(']', '')  # 去除[],这两行按数据不同,可以选择
        s = s.replace("'", '').replace(',', '') + '\n'  # 去除单引号,逗号,每行末尾追加换行符
        file.write(s)
    file.close()
    __filelist.clear()
    __file_extension_selection.clear()
    print(Saved_path_file_name + " has been saved successfully")


if __name__ == '__main__':
    Path =""  # os.getcwd()
    if Path:
        FileNameExtract_To_txt(Input_Path=Path, Saved_path_file_name=Path + 'files.txt',
                               file_extension_selection=['.py','.bmp'])

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页