递归访问目录,嵌套函数,递归函数map函数,filter函数,reduce函数

简介: 一、递归访问目录: 且目录中嵌套目录,有层次的列出给定目录中所有的文件和文件夹

一、递归访问目录: 且目录中嵌套目录,有层次的列出给定目录中所有的文件和文件夹

def listdir(path, count=0):
    list_dir = os.listdir(path)
    for i in list_dir:
        path1 = os.path.join(path + "/", i)
        if os.path.isdir(path1):
            print(count * "    ", i)
            count1 = count + 1
            listdir(path1, count1)
        else:
            print(count * '    ', i)
listdir('D:test')
# 输出
 1.txt
 2.txt
 test1
     1.txt
     2.txt
     test2
         1.txt

二、定义一个嵌套函数, 外层函数打印this is outing function,内层函数功能:打印This is inner function

def outer():
    print("this is outing function ")
    def inner():
        print("This is inner function")
    return inner
f_inner = outer()
f_inner()
# 输出
this is outing function 
This is inner function


三、定义一个递归函数:

打印斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

def fib(n):
    if n == 0:
        return [0]
    if n == 1:
        return [0, 1]
    if n == 2:
        return [0, 1, 1]
    fibs = [0, 1, 1]
    for i in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
    return fibs
print(fib(10))
# 输出
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

四、对列表进行排序:

list_data = [“grape”, “peach”, “berry”, “pineapple”, “apple”, “strayberry”, “watermelon”] 排序规则:按照最后一个字符进行排序,如果最后一个字符相等,按照第一个字符排序

list_data = ["grape", "peach", "berry", "pineapple", "apple", "strayberry", "watermelon"]
def data(x):
    return [-1]
print(list_data)
list_data.sort(key=lambda x: x[-1])
print(list_data)
# 输出
['grape', 'peach', 'berry', 'pineapple', 'apple', 'strayberry', 'watermelon']
['grape', 'pineapple', 'apple', 'peach', 'watermelon', 'berry', 'strayberry']

五、利用map函数: 计算三个列表,相同位置元素之和

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
map_obj = map(lambda x, y, z: x + y + z, list1, list2, list3)
print(list(map_obj))
# 输出
[12, 15, 18]

六、利用filter函数过滤列表中所有带a的字符串

list_data = ["grape", "what", "which", "you", "friend", "am"]
filter_obj = filter(lambda x: 'a' not in x, list_data)
print(list(filter_obj))
# 输出
5050


相关文章
|
2月前
|
索引
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
|
2月前
|
数据处理 Python
Pandas中的map函数应用
Pandas中的map函数应用
18 2
|
2月前
|
JavaScript 前端开发
js map和reduce
js map和reduce
WK
|
2月前
|
Python
map函数
在Python中,`map()` 是一个内置的高阶函数,接受一个函数和一个或多个可迭代对象作为参数,将指定函数应用于每个元素,并返回包含应用结果的迭代器。若有多个可迭代对象,其元素会并行地传递给函数。`map()` 返回一个迭代器,需用 `list()` 转换。在Python 3中,`map()` 返回迭代器而非列表,并支持 `lambda` 表达式,适用于多种应用场景。注意,当输入的可迭代对象长度不同时,结果仅包含最短对象的长度。
WK
26 1
WK
|
2月前
|
Python
map和filter的区别是什么
`map()`和`filter()`均为Python中的高阶函数,前者针对可迭代对象中的每个元素执行指定操作,如数值翻倍或字符串转大写;后者则筛选出符合条件的元素,例如仅保留偶数或非空字符串。两者均返回迭代器,并可通过`list()`等函数转换为所需的数据结构。具体使用时,应依据实际需求和场景选择合适的函数。
WK
14 1
WK
|
2月前
map和filter的区别是什么
在编程中,`map` 和 `filter` 是处理数组或集合时常用的两个函数。`map` 用于将每个元素通过指定函数转换后生成新的数组,而 `filter` 则根据条件筛选出符合条件的元素组成新数组。两者的主要区别在于:`map` 的返回数组长度与原数组相同,但元素被转换;`filter` 的返回数组长度可能不同,只包含符合条件的元素。
WK
27 2
|
2月前
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。
|
3月前
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
|
3月前
|
存储 算法 Java
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
|
4月前
|
人工智能 算法 大数据
算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环
这篇内容介绍了编程中避免使用 for 循环的一些方法,特别是针对 Python 语言。它强调了 for 循环在处理大数据或复杂逻辑时可能导致的性能、可读性和复杂度问题。
51 6
算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环