1.8 递归列出目录里的文件 1.9 匿名函数

1.8 递归列出目录里的文件

#### 遍历目录里的文件(不支持子目录文件)
import os
for i in os.listdir('C:/Users/Administrator/Desktop/技术文档'):
    print (i)
###########################################
#### 目录是否存在
import os
d = os.path.isdir('C:/Users/Administrator/Desktop/技术文档/.')
print(d)
> True
#### 文件是否存在
import os
d = os.path.isfile('C:/Users/Administrator/Desktop/技术文档')
print(d)
> False
#### 路径连接
import os
d = os.path.join('C:/Users/Administrator/Desktop','aa','bb')
print(d)
> C:/Users/Administrator/Desktop\aa\bb
######################################################
#### 遍历目录里的文件和子目录里的文件 
import os
def print_files(path):
    lsdir = os.listdir(path)
    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
    files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
    if files:
        for f in files:
            print(os.path.join(path, f))
    if dirs:
        for d in dirs:
            print_files(os.path.join(path, d))
print_files('C:/Users/Administrator/Desktop/技术文档')

1.9 匿名函数

匿名函数

  • lambda函数是一种快速定义单行的最小函数, 可以用在任何需要函数的地方

lambda

defun(x, y):
    return x*y
#
r = lambda x,y:x*y
print(r(2,3))     # 调用
> 6
  • 匿名函数优点:
    • 1.使用python写一些脚本时, 使用lambda可以省去定义函数的过程, 让代码更加精简
    • 2.对于一些抽象的, 不会被别的地方再重复使用的函数, 有时候函数起个名字也是个难题, 使用lambda不需要考虑命名的问题
    • 3.使用lambda在某些时候让代码更容易理解

lambda基础

  • lambda语句中, 冒号前是参数, 可以有多个,逗号隔开, 冒号右边是返回值
  • lambda语句构建的其实是一个函数对象

lamdba使用

from functools import reduce
def add(x, y):
    return x + y
sum = reduce(add, range(1,101))
print(sum)
> 5050
#
from functools import reduce
print(reduce(lambda x,y:x+y, range(1,101)))
> 5050

习题

  1. 从终端接收若干个数字,要求使用filter()函数,将输入的不是数字的值剔除掉(用户输入的内容有随机性,当我们要接收一个数字的时候,他可能会输入一个字符串过来,要求当用户输入的不是数字,就剔除掉)

  1. 从终端接收若干个以空格隔开的字符串,然后去除所有的26个字符之外的字符后,打印到屏幕上 要求:使用map()函数,map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

  1. 从终端接收若干个以空格隔开的字符串 (1).以空格隔开的字符串为用户想要输入的一个值 (2).用户在输入时不小心按出来了字母键