IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 高阶函数和文件操作 -> 正文阅读

[Python知识库]高阶函数和文件操作

高阶函数

把函数作为参数带入,这样的函数称为高阶函数,高阶函数是函数式编程的体现,函数式编程就是指这种高度抽象的编程范式
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

  • 学习使用某个函数,主要是3点
    • 函数名称
    • 函数有几个参数,每个参数是什么意思
    • 函数的返回值,主要是知道返回值类型是什么
  1. map()
    map(func,lst),将传入的函数变量func作用到st变量的每个元素中,并将结果组成新的列表(python2)/d迭代器(Python3)返回.
    map 函数:
  • 函数名称:map
  • 参数两个
    • 参数1:一个函数
    • 参数2:是一个可以遍历的序列,如列表、集合、字典等
  • 返回值:map object,是一个对新对象的引用
  • map 函数内部会将 f1 函数执行多次(次数=列表 l1 中元素个数)
  • 每次执行 f1 函数时,形参 x 会被按顺序赋值为 l1 列表中的元素
  • f1 函数的返回值,会被 map 函数放到一个新的序列中
  • 新列表与原列表的元素数量一致:为什么?
    原列表中有几个元素,f1 函数就会执行几次
    f1 函数执行几次,就会 return 几个数据
    而返回的数据又被添加到新列表中,所以一致
  • map 函数的扩展性做的非常好:可以使用 set、list、tuper 函数将返回值转换为自己想要的数据类型
l1 = [10, 20, 4, 5, 60]


def f1(x):
    return x * 2
    # return x
    # return 'b'
    # print(x)


# res = map(f1, l1)
res = map(lambda x: x * 2, l1)
print(res)
# new_list = list(res)
# new_list = tuple(res)
new_list = set(res)
print(new_list)

print('--------------------------')

"""
案例2:将 l2 列表中的小写字母转换为大写字母
"""
l2 = ['a', 'b', 'c', 'd']


def convert_upper(x):
    return x.upper()


# res = map(convert_upper, l2)
res = map(lambda x:x.upper(), l2)
print(list(res))

"""
3、将列表中的大写转成小写;将小写转成大写
"""
l3 = ['a', 'B', 'C', 'd']


def convert(i):
    if i.isupper() is True:
        return i.lower()
    elif i.islower() is True:
        return i.upper()


res = map(convert, l3)
print(list(res))

  1. reduce()
    reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。
    注意:reduce()传入的参数func必须接收2个参数。
import functools

list1 = [1, 2, 3, 4, 5]


def my_sum(a, b):
    print(a, b)
    # return a + b
    return a * b


res = functools.reduce(my_sum, list1)
print(res)

  1. filter()
    filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为列表, 可以使用 list() 来转换。
    如果想将列表中部分符合条件的元素筛选出来,就使用 filter 方法
将列表中所有大于10的数字放到一个新列表中
l1 = [10, 20, 4, 5, 60]


#
# def filter10(x):
#     if x > 10:
#         return x
#     else:
#         return ''
#
#
# res = map(filter10, l1)
# print(list(res))


def filter10(x):
    if x > 10:
        return x


# res = filter(filter10, l1)
res = filter(lambda x: x if x > 10 else '', l1)
print(list(res))

文件内容操作常用API

文件操作介绍

文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候可以直接使用,而不必重新制作一份,省时省力

  • 文件操作基本步骤
    无论手动操作文件还是通过代码,都是这些步骤
  • 打开文件
  • 读写等操作
  • 关闭文件
    注意:可以只打开和关闭文件,不进行任何读写操作

打开

在Python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件

open(name,mode)

name:是要打开的目标文件名和字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式):只读、写入、追加等。

  1. 打开文件模式
模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  1. 快速体验
f=open('text.txt','w')

注意:此时的f是open函数的文件对象

文件对象方法

  • 语法
对象.write('内容')
  • 体验
# 1. 打开文件 
f = open('test.txt', 'w') 
# 2.文件写入 
f.write('hello world') 
# 3. 关闭文件 
f.close()

注意:
1、w 和 a 模式:如果文件不存在则创建该文件;如果文件存在, w 模式先清空再写入, a模式直接末尾追加
2、r模式:如果文件不存在则报错

  • read()
文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文 件中所有的数据。

  • readlines()
    readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
f = open('test.txt') 
content = f.readlines() 
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc'] 
print(content) 
# 关闭文件 
f.close()
  • read和readlines

    • read 和 readLines 方法默认将文件内容全部读取出来,区别在于
    • raed 方法返回值时字符串,readLine 方法返回值是列表,将文件的每一行作为列表的一个元素
    • read 方法可以读取二进制文件,而 readLines 方法主要读取文本文件
res = open('aa.txt', 'r')
content = res.read()  # 默认时读取全部内容
print(content)
# 关闭文件
res.close()
print('----------------')
res = open('aa.txt', 'r')
content = res.readlines()  # 默认时读取全部内容
print(content)
# 关闭文件
res.close()

readLines 方法读取体积较大文件,就有问题

  • readline()
    readline()一次读取一行内容。
f = open('test.txt') 
content = f.readline() 
print(f'第一行:{content}') 
content = f.readline() 
print(f'第二行:{content}')
# 关闭文件 
f.close()
  1. seek()
    作用:用来移动文件指针。
    语法如下:
文件对象.seek(偏移量, 起始位置)

起始位置:

  • 0:文件开头
  • 1:当前位置
  • 2:文件结尾
  1. 关闭
文件对象.close()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:56:01  更:2021-09-19 07:57:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:53:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码