Skip to content

Latest commit

 

History

History
368 lines (263 loc) · 6.98 KB

File metadata and controls

368 lines (263 loc) · 6.98 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0088
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

列表_清空列表_clear

回忆

图片描述

  • 还有什么 方法呢?🤔

喊救命

list.
  • append之后是?

图片描述

查看帮助

  • 后面是clear
help(list.clear)
  • 清空列表中所有列表项

图片描述

  • 只有一个 参数是 self
    • self是什么?

self

  • self就是自己

图片描述

  • 谁自己?

调用

  • 谁调用clear
    • 就是谁自己
  • 调用的 clear?
nlist = [0, 1, 2]
nlist.clear()
nlist

  • nlist 调用
    • 所以 self 就是 nlist对象自己

图片描述

  • nlist被清空了
  • nlist 是 啥?

喊救命

  • 对着 nlist 喊 救命(help)
help(nlist)
  • nlist 是一个
    • 列表类 的 实例对象

图片描述

  • 什么 是 列表类 呢??

汽车类

  • 先回忆 什么是 类?

图片描述

    • 是一种 抽象的 数据类型
    • 比如说 汽车类(car class)
  • 这辆吉普车 是
    • 隶属于 汽车类(car class)的
    • 实例对象 this_jeep
  • this_jeep 可以调用 自己的成员方法
    • this_jeep.start_engine()
    • this_jeep.accelerate(speed)
    • this_jeep.brake()
    • this_jeep.turn(direction)

具体代码

  • 列表类 就是 一种抽象类型
    • 内建的 可变 序列
    • builtin mutable sequence
  • append 和 clear 都是 list类 的 成员方法
    • 都有self 作为第一个参数

图片描述

  • append 和 clear
    • 都是 list这个列表类的 成员方法
      • member method
  • 通过 实例对象 来调用
    • append
      • name_list.append("o4z")
    • clear
      • name_list.clear()
    • .(点)的意思是里面的
  • 列表 为啥 要清空 ?

清空clear

  • disney 发布一个 周边
    • 引发 大量人 排队
    • 形成列表
  • 周边 卖没了
    • 后面的人 排队 也买不着了
    • 列表 只能 清空 了
people_list.clear()
  • clear 是
    • 可以清空列表
    • 是 list列表类的 成员方法

图片描述

  • 可以 有什么 实际应用 吗?

收银员累加程序

图片描述

  • 想做个 收银员的 程序

ai辅助

图片描述

while True:
    numbers = []
    while True:
        num = input("请输入商品价格(输入end停止输入):")
        if num == "end":
            break
        try:
            num = float(num)
            numbers.append(num)
        except ValueError:
            print("输入不合法,请输入有效的浮点数或end。")
    total = sum(numbers)
    print(f"本次输入的数字总和为:{total}")
  • 这里面 每次重新 累加
    • 先将 空列表 赋给了 numbers

运行结果

  • 输入end进行求和
  • 输入ctrl+c结束程序

图片描述

  • lst.clear()和 lst = [ ]
    • 有区别吗?

区别

  • 单个列表 看不出 区别
    • 两个列表 就有区别了
nlist1 = [0, 1, 2]
nlist2 = nlist1
nlist2.clear()
nlist1
nlist2
  • 首先定义 nlist1、nlist2
    • 是 两个 列表对象
    • 列表对象nlist2 调用clear方法

图片描述

  • nlist1、nlist2 都清空了

另一种情况

nlist1 = [0, 1, 2]
nlist2 = nlist1
nlist2 = []
nlist1
nlist2
  • 还是 这两个 列表对象
    • 将 空列表[ ] 赋给 nlist2
    • nlist1 不会受到影响

图片描述

  • 为什么会不一样呢?

将nlist2清空

nlist1 = [0, 1, 2]
nlist2 = nlist1
nlist2.clear()
print(nlist1, nlist2)
  • 将 nlist1 赋给 nlist2
    • 两个列表对象 引用着 同一地址

图片描述

  • nlist2清空 就是
    • nlist1 清空

将 空列表 赋给 nlist2

nlist1 = [0, 1, 2]
nlist2 = nlist1
nlist2 = []
print(nlist1, nlist2)
  • 赋值之后
    • 两个列表 指向 不同地址

图片描述

  • 可以看看 具体地址吗?

通过id观察

nlist1 = [0, 1, 2]
nlist2 = nlist1
id(nlist2), id(nlist2)
nlist2.clear()
id(nlist2), id(nlist2)
  • 这两个列表对象
    • 地址始终没有变化
    • 一直指向同一个位置

图片描述

  • 所以清空一个
    • 另一个所指向的地址不变
      • 也清空了

将空列表赋给nlist2

nlist1 = [0, 1, 2]
nlist2 = nlist1
nlist2 = []
print(nlist1, nlist2)
  • 将nlist1 赋给 nlist2
    • 两个列表对象指向同一地址

图片描述

  • 将 空列表[] 赋给nlist2
    • nlist2 地址变了

图片描述

  • nlist1 地址没变
    • 还是原来的

通过id 观察地址

nlist1 = [0, 1, 2]
id(nlist1)
nlist2 = nlist1
id(nlist2)
nlist2 = []
id(nlist1), id(nlist1)
  • 通过id函数得到列表的地址

图片描述

  • 将空列表 赋给nlist2
    • 让nlist2 指向 一个空列表的地址
      • 一个新地址
    • 和nlist1那个地址 就没关系了

总结一下 新单词

单词 单词含义 描述
list 列表 内建可变序列
append 追加 list的方法
用于在列表的末尾添加一个元素
clear 清空 list 的方法
清空列表
function 函数 独立的代码块
可以直接调用
method 方法 与对象相关联的函数
需要通过对象来调用

总结

  • 这次了解了 list列表的 清空方法
    • clear
  • clear
    • 前面要有 对象名
    • .(点)的意思是 里面的
    • 可以把整个列表清空
    • 就像清空回收站

图片描述

clist = list("oeasy")
clist
clist.clear()
  • 不想 清空
    • 定点删除 可以 吗?🤔
  • 下次再说 👋
  • 配套视频

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。