# 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 | 关键,钥匙,键 |