[Python3] 006 列表的常用方法
一个篱笆三个桩,list 有……好多个桩
1. 列表的小伙伴们
(1) 召唤小伙伴
- dir(list) —— 列出能帮助 list 的方法或函数
- help(list) —— 查看这些“小伙伴们”的具体用法
- help() 可以“私聊”,如 help(list.append) 可以仅查看 append() 的用法
(2) 我给“他们”分了个组
- “增小组”
- “删小组”
- “整队组”
- 其他组
- 计数君
- 测量君
- 索引君
- 拷贝君
2. 小伙伴们的“才艺展示”
(1) “增小组”——往列表里添加数据
# 例1 append()
list1 = [0, 2, 4, 6, 8]
print(list1.append(10))
print(list1)
print(list1.append(12, 14))
- 输出结果
None
[0, 2, 4, 6, 8]
TypeError……append() takes exactly one argument (2 given)
None 是 append() 返回的。
append() 能且仅能在列表末尾加 1 个数据,多加报错。
输入类型不匹配(省略号:此处略去若干)append() 只能放 1 个数,而你放了 2 个。
# 例2.1 extend()
list2 = [0, 2, 4, 6, 8]
list2.extend([10])
print(list2)
list2.extend([12, 14])
print(list2)
list2.extend(15)
print(list2)
- 输出结果
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10, 12, 14]
TypeError……'int' object is not iterable
extend() 可以向列表中加 1 个数据,也可以加多个数据,但要用 [] 框起来。
最后的报错显示 'int' 不可迭代。
# 例2.2
# 接上面,看看 'str' 行不行
list2.extend('15')
print(list2)
- 输出结果
[0, 2, 4, 6, 8, 10, 12, 14, '1', '5']
不报错,但不是理想结果。
# 例2.3
# 接上面
list2.extend('15', '17')
print(list2)
- 输出结果
TypeError……extend() takes exactly one argument (2 given)
报的错与 例1 相似。
综上,我们看到 extend() 能加入多个数据;但对 Python 来说,extend() 只是加入了 1 个列表。
# 例3.1 “插队”的 insert()
list3 = [0, 1, 2, 3, 4, 5, 6]
list3.insert(3, "YorkFish") # 例2.2 告诉我们列表中除了数字,还能放别的
print(list3)
- 输出结果
[0, 1, 2, 'YorkFish', 3, 4, 5, 6]
'YorkFish' 被夹在原下标 2 与 原下标 3 的两个数据之间(脑海里突然冒出“夹逼准则”),成为新的下标为 3 的数据。
# 例3.2
list3 = [0, 1, 2, 3, 4, 5, 6]
list3.insert(18, "YorkFish") # 看看超出列表长度,Python 怎么处理
print(list3[8])
- 输出结果
[0, 1, 2, 3, 4, 5, 6, 'YorkFish']
IndexError……list index out of range
超出列表长度,自动排到对尾。
报的错为索引错误,在此印证排到队尾,没有开辟下标 8 到下标 18 的空间。
注意
# 补充
list100 = [1, 2, 3, 4, 5]
print(id(list100))
print(list100)
print('-'*20)
list100.append('A1')
print(id(list100))
print(list100)
print('-'*20)
list100.extend([7, 8, 9])
print(id(list100))
print(list100)
print('-'*20)
list100.insert(0, '0')
print(id(list100))
print(list100)
- 输出结果
2926768964872
[1, 2, 3, 4, 5]
--------------------
2926768964872
[1, 2, 3, 4, 5, 'A1']
--------------------
2926768964872
[1, 2, 3, 4, 5, 'A', 7, 8, 9]
--------------------
2926768964872
['0', 1, 2, 3, 4, 5, 'A', 7, 8, 9]
综上,“增小组”是在原列表的基础上直接操作。
(2) “删小组”——“增小组”的对手
# 例4 pop()
list4 = [0, 1, 2, 3, 4, 5, 6]
n1 = list4.pop()
n2 = list4.pop(2)
print(n1)
print(n2)
print(list4)
n3 = list4.pop(18)
- 输出结果
6
2
[0, 1, 3, 4, 5]
IndexError……pop index out of range
pop() 默认弹出队尾元素,在括号里指定位置,如果有,则弹出对应数值。
若给 pop() 的下标值超标,则会有以上报错。
# 例5 remove()
list5 = [0, 'A', 'B', 66, 'D', 66, 'E', 100]
n1 = list5.remove(66)
print(n1)
print(list5)
list5.remove('C')
- 输出结果
None
[0, 'A', 'B', 'D', 66, 'E', 100]
ValueError……list.remove(x): x not in list
与 pop() 不同,revome() 返回的是 None。
remove() 不指定下标,想删什么,写到括号里。如果列表中恰有 1 个,就删了它;如果列表中不止 1 个,就删掉下标值最小的那个;如果列表中没有,报上述错误。
# 例6 “清空大师” clear() 是个“狠人”
list6 = [0, 1, 2, 3, 4, 5, 6]
print(list6)
list6.clear()
print(list6)
- 输出结果
[0, 1, 2, 3, 4, 5, 6]
[]
clear() 可清空列表。
# 例7 “清除大师” del 是个“狼人”,因为他比 clear() 要狠一点
list7 = [0, 1, 2, 3, 4, 5, 6]
print(list7)
del list7
print(list7)
- 输出结果
[0, 1, 2, 3, 4, 5, 6]
NameError……name 'list7' is not defined
报的错显示 list7 没有被定义,说明 del 能删除整个列表。
注意
- pop() 和 remove() 与“增小组”一样,是在原列表的基础上直接操作。
3) “整队组”——给列表“洗牌”
# 例8 reverse()
list8 = [0, 1, 2, 3, 4, 5, 6]
list8.reverse()
print(list8)
- 输出结果
[6, 5, 4, 3, 2, 1, 0]
reverse() 可将列表“翻转”。
# 例9 sort()
list9_1 = [6, 5, 4, 3, 2, 1, 0]
list9_2 = [8, 3, 7, 2, 1, 4, 9, 3]
list9_1.sort()
list9_2.sort()
print(list9_1)
print(list9_2)
- 输出结果
[0, 1, 2, 3, 4, 5, 6]
[1, 2, 3, 3, 4, 7, 8, 9]
sort() 可将列表按从小到大排序,数字大小相等就相邻排放。
可与 reverse() 组合使用,使数据倒序输出。
4) 其他组
- 计数君
# 例10 count()
list10 = [4, 8, 3, 7, 3, 1, 4, 9, 3]
print(list10)
list10_count = list10.count(3)
print(list10_count)
print(list10.count(4))
- 输出结果
[4, 8, 3, 7, 3, 1, 4, 9, 3]
3
2
- 测量君
# 例11 多才多艺的 len()
list11 = [0, 2, 3, 6, 6, 4, 2, 5, 7, 6, 43, 34]
print(len(list11)) # 测量列表长度
- 输出结果
12
我说 len() 多才多艺是因为他还能测别的,挖个坑,日后写篇“总结”,编号 Py006-1。
- 索引君
# 例12.1 index()
list12 = [0, 2, 3, 6, 6, 4, 2, 5, 7, 6, 43, 34]
print(list12.index(3))
print(list12.index(6))
print(list12.index(8))
- 输出结果
2
3
ValueError……8 is not in list
括号内放目标索引值,若有,输出在列表中的位置下标;若无,报错。
索引君有个朋友不报错,挖个坑,日后填,编号 Py006-2。
# 例12.2 index()
list12 = [0, 2, 3, 6, 6, 4, 2, 5, 7, 6, 43, 34]
start = list12.index(6) + 1 # 得到第一个 6 的后一个元素的下标
stop = len(list12) # 得到列表长度
print(list12.index(6, start, stop)) # 得到第二个 6 的下标
- 输出结果
4
第二个 6 的下标为 4。
- 拷贝君
# 例13 copy()
list13_1 = [0, 1, 2, 3, 4, 5, 6]
list13_2 = list13_1.copy()
print(list13_1)
print(id(list13_1))
print(list13_2)
print(id(list13_2))
print("-"*20)
list13_2[3] = 333
print(list13_1)
print(list13_2)
- 输出结果
[0, 1, 2, 3, 4, 5, 6]
2926769264008
[0, 1, 2, 3, 4, 5, 6]
2926769325960
--------------------
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 333, 4, 5, 6]
copy() 解决了赋值共用数据的尴尬。
挖坑:“深拷贝”与“浅拷贝”,编号 Py006-3。
[Python3] 006 列表的常用方法的更多相关文章
- 08python之列表的常用方法
列表list是python常用的数据类型,需要掌握以下常用方法: name_list = ['alex','tenglan','65brother'] 这个变量和之前的变量只存一个数字或字符串,这个列 ...
- [Python3] 005 列表的基本使用
目录 1. 列表概述 2. 创建列表 3. 列表常用操作 (1) 访问列表 (2) 分片操作 1) 正向操作 2) 反向操作 3) 内置函数 id() 加入队伍 1. 列表概述 一组有顺序的数据的组合 ...
- Python2和Python3中列表推导式的不同
Python2和Python3中列表推导式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in 'hello'] ...
- python3.7[列表] 索引切片
python3.7[列表] 索引 切片 排序 #### 列表.sort 永久排序 sorted(列表) 临时排序 ### >>> print(sorted(a))[ ...
- python3 列表的常用方法
Python3中常用的列表方法(method) 见:help(list) 方法 意义 L.index(v [, begin[, end]]) 返回对应元素的索引下标, begin为开始索引,end为结 ...
- python3中列表、元组、字典的增删改查说明详解
python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之 ...
- python2和python3关于列表推导的差别
看下面两个例子: python2的环境:列表中的同名变量名被替换了 >>> x = 'my precious' >>> dummy = [x for x in 'A ...
- Python基础之带你快速掌握列表的常用方法
append 前面说过列表是一种 内容可改变的 对象. append方法就会改变列表的内容,在后面添加一个元素 比如 a = [1, 2, 3.14, 'hello'] # append 之后,a就变 ...
- python 字符串 列表 字典 常用方法
今天学习内容如下: 1.学习昨天练习题目的解题新方法 #1.使用while循环输入 1 2 3 4 5 6 8 9 10 ''' count = 0 while count < 10: coun ...
随机推荐
- spring boot filter -Autowired
需求:在SpringBoot实现拦截器,并且需要自定义的filter类型自动装配一些对象 自定义的过滤器类 public class SessionExpireFilter implements Fi ...
- ASP.NET超大文件上传与下载
总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...
- Seata简单介绍及其原理(一)
Seata 是什么? Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的 ...
- Oralce动态的创建按月的分区
说明: XXX为一个配置表,里面配置了要分区的表明,即CODENO = 'PARTITIONTABLENAME',只有每个月月底的时候,才会进入IF的判断,此外还有一个定时任务,每天去执行即可. 存储 ...
- 【CF1247F】Tree Factory(构造)
题意:给定一棵n个点的树,要求将一条可以随意标号的链通过若干次操作变成这棵树 一次操作是指若v不为根且v的父亲不为根,则将v以及v的子树移到v的父亲的父亲上 要求给出标号方案,操作次数以及方案 n&l ...
- UE4 质心相关
Add force 始终给质心施加力,即使手动偏移了质心(Center of mass)也不例外. Add force at location local 相对于物体的原始质心位置增加一个偏移值后的位 ...
- uploadify上传插件参数的一些设置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 9-10 November
cout 和 printf 在 C++ 中的实现:四舍六入五随缘.比如 printf("%.0lf\n", x=1.5) => 1. 标准做法:printf("%d ...
- Python 学习笔记(基础语法 restful 、 Flask 和 Requests)
input 函数 #!/usr/bin/env python3 name = input("\n\n按下 enter 键后退出.") print(name) print() 在 p ...
- PhantomJs 与 Casperjs
利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了. CasperJs是对phantomjs的一次封装.即phantomjs是原生的,而casperjs是封装在以phan ...