python3xiaobaike_2020/chapter3/3-3 python3小白课:深入列表.md
2025-04-20 23:22:14 +08:00

138 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# python3小白课深入列表
我们在前面的课程中已经初步了解了列表和元组的相关知识。
我们也知道,列表还有元组没有的增删成员等功能。因此,本节课我们再来深入了解一下列表特有的一些知识点吧。
直接上代码例子:
```python
# coding:utf-8
# 增加列表元素,最最常用。列表有点像其他编程语言中所说的数组,但它支持多种类型的元素
# 很常用的一个场景是先定义一个空列表,后续把需要存储的成员一个个存进列表去
# 使用append方法可以将元素添加到列表中这么写
a = []
a.append("小白")
print(a)
# 也支持增加列表、元组等等序列类型作为单个成员,可以实现列表嵌套列表或元组等的效果
a.append((1, 2, 3))
print(a, len(a))
# 如果是要追加一个列表而不是加个列表元素呢使用extend方法
a.extend(["apple", "banana"])
print(a, len(a))
# 刚才都是添加到列表尾部的如果希望在中间插入元素呢使用insert方法即可需要指定插入位置的索引
a.insert(1, "我是插入的元素")
print(a)
# 删除列表元素
# 使用del语句可以删除列表元素、列表子序列还能删除变量呢
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
del a[1]
print(a)
del a[4:]
print(a)
# 删除变量是del命令带的功能删除后再打印会报错。但我们很少做这样的操作你可以不掌握
name = "小白"
del name
print(name) # 这句会报错
# 你还可以使用remove方法来删除元素它不根据索引删除根据的是元素本身删除如果找不到会报错
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.remove(4)
print(a)
a.remove(11) # 这里找不到,会报错
print(a)
# 如果你需要清空列表将列表变回空列表可以使用clear方法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.clear()
print(a)
# 后面在修改元素列表的部分我们还有一种可以删除元素的方法,也是很好用的↓↓↓
# 修改列表元素
# 可以直接通过索引获取需要修改的元素来修改
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[1] = "啊哦,我被修改啦~"
print(a)
# 也可以通过索引的各种方法修改列表,也支持步长等修改
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 这里我们取出了两个元素,却给赋值三个元素,这样相当于删除两个,再插入三个,也是可以的
a[1:3] = ["修改1", "修改2", "修改3"]
print(a)
# 赋值为空列表,还能做到删除元素的功效,这也是一种便捷的删除元素的做法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[1:3] = []
print(a)
```
---
### 列表的一些其他常用方法
列表还有一些其他的常用方法,如果你有需要可以使用,大致了解即可,有需要时可以查资料
```python
# coding:utf-8
# 你可以查看有哪些内置方法,注意剔除私有方法和特殊方法
print(dir(list))
# count方法可以统计列表中某个元素出现的次数
a = [1, 2, 3, 4, 5, [5, 6, 7], 7, 8, 9, 10]
print(a.count(5))
# index方法判断某个元素在列表中出现的位置可以在第二第三个参数中指定搜索的范围找不到会报错
print(a.index(4, 2, 3))
# pop方法可以提供元素出栈功能实现元素的先入后出append方法是python中的类似入栈push的功能
# 使用pop方法可以将列表中最后一个元素移出栈你可以简单理解为删除最后一个元素
print(a.pop()) # 会返回那个被移出栈的元素
print(a)
# reverse方法可以将元素反转比如一堆数字可以实现倒序排列的效果
a.reverse()
print(a)
# sort方法可以对元素进行排列
# 支持传入key、reverse两个参数key参数可以指定生成比较大小的键
# reverse参数为布尔型默认为False从小到大排序传入True则从大到小排列
a = ["12345", [5, 6, 7], "little bai"]
# key传入len方法注意没有括号会计算每个元素的长度再倒序排列注意必须每个元素都支持len方法
a.sort(key=len, reverse=True)
print(a)
# 也可以做数字排序
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.sort(reverse=True)
print(a)
# 上述讲的排序方法需要改变列表本身的顺序,如果我只想排序不想改变呢?
# 复制一个新列表,将新列表进行排序是一个办法,还有其他办法吗?
# reversed函数可以倒序列表生成可迭代对象可以转化为列表展示。但不会改变原列表
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(reversed(a)))
print(a)
# sorted函数可以排序列表也不会改变原列表还支持参数
b = [2, 1, 3, 4, 5, 8, 7, 6, 9, 10]
print(sorted(b))
# 这个也行这样看来它可以替代reversed函数但要写个参数看个人方便吧
print(sorted(b, reverse=True))
print(b)
# key参数也可以传入一个自己定义的函数返回排序序号啥的关于自己定义函数我们将在后面讲到
c = ["12345", [5, 6, 7], "little bai"]
print(sorted(c, reverse=True, key=len))
print(c)
```
### 单词释义
| 单词 | 释义 |
| ---------------- | ---------------------------------------------------------- |
| append | 附加,增补 |
| extend | 扩展 |
| insert | 插入 |
| del | delete删除这个单词的简写 |
| remove | 拿开,去除 |
| clear | 清除,清理 |
| count | 计数 |
| index | 索引 |
| Sequence Packing | 突然地出现,突然地伸出,这是理解为出栈命令 |
| push | 推推进去这里理解为入栈命令其他语言可能有push这个命令 |
| reverse | 颠倒使反转reversed为这个单词的过去式意思为已反转的 |
| sort | 排序sorted为这个单词的过去式意思为已排序的 |
| key | 关键,钥匙,键 |