138 lines
6.3 KiB
Markdown
138 lines
6.3 KiB
Markdown
# 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 | 关键,钥匙,键 |
|
||
|