1、列表(List)
列表、元组和字符串因为成员有序,可以通过下标访问,又称为「序列」。列表有序,内容长度可变,使用中括号[]表示,元素间用逗号分隔,元素的数据类型可以不一样!列表的相关的操作有:「元素访问,切片,修改,追加,插入,删除,扩展,统计,排序,下标获取,拷贝」
① 列表创建
直接把元素放在中括号[]中,用逗号进行分隔,比如:
data_list = [1,2,0,"a",True]
② 访问列表元素
列表是有序的,可以通过「下标索引」来访问列表中的元素,可以从左开始索引,也可以从右开始索引。从左开始索引的下标范围:[0, 列表长度-1],从右开始索引的下标范围:[-1, 列表长度],如果索引下标不在范围里的话,会报数组越界错误!代码示例如下:
num_list = [1,2,3,4,5] print(num_list[0]) print(num_list[-3]) print(num_list[5])
运行结果如下:
1 3 IndexError: list index out of range
③ 列表切片
通过索引的方式只能获取一个元素,如果想获取多个元素呢?只能通过多个下标先获取多个元素
再另外拼接一个列表么?当然不用,Python为我们提供了强大的「切片操作」。通过「:(冒号)」分割前后索引来实现,要注意索引的边界是顾头不顾尾,比如a[1:3],包含的是a[1],a[2],不包含a[3]!详细用法示例如下:
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 截取[0,2)间的数据,输出结果:[0, 1] print(num_list[0:2]) # 截取[1,9],输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9] print(num_list[1:]) # 截取[0,7],输出结果:[0, 1, 2, 3, 4, 5, 6, 7] print(num_list[:-2]) # 截取所有元素,输出结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(num_list[:]) # 截取[0,10)的元素,步长为2,输出结果:[0, 2, 4, 6, 8] print(num_list[0:10:2]) # 截取[2,10)的元素,步长为3,输出结果:[2, 5, 8] print(num_list[2::3])
④ 更新、追加、插入列表元素
更新 列表元素 直接通过下标索引获得对应元素进行修改
即可,比如上面的num_list,修改第二个元素的值只需:num_list[1] = 'xxx'
,另外,如果你不知道修改的元素下标索引是哪一个,但是你知道元素的值,可以先通过 index("元素的值")
找到对应的下标索引值,再去修改元素的值。
追加列表元素可以通过 append函数
在列表的表位追加一个元素,比如num_list调用append(10)后,追加后列表里的元素就变成了 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10]。append函数只是在队尾插入一个元素,如果想插入到特定位置则需要使用insert函数
了。参数有两个,插入的下标位置(从0开始)
和 插入元素值
。比如num_list调用insert(3, 2.5)后的列表:[0, 1, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10]
⑤ 删除列表元素
删除这里要分清楚是「想删除整个列表」还是「删除列表里某个元素」,代码示例如下:
num_list = [0, 1, 2, 3, 4, 5] # remove()直接对列表中的元素进行检索删除,根据值不是下标,返回删除后的列表 num_list.remove(2) print(num_list) # del()根据下标进行检索删除,不返回删除值 del num_list[2] print(num_list) # pop()根据下标进行检索删除,不填下标默认删除最后一项,返回删除值 num_list.pop() print(num_list) # 删除列表引用 del num_list print(num_list)
运行结果如下:
[0, 1, 3, 4, 5] [0, 1, 4, 5] [0, 1, 4] NameError: name 'num_list' is not defined
⑥ 列表遍历
可以通过循环对列表进行遍历,遍历的方式有多种,代码示例如下:
num_list = [0, 1, 2, 3, 4, 5] for num in num_list: print(num, end='\t') for index in range(0, len(num_list)): print(num_list[index], end='\t') for index, value in enumerate(num_list): print('index = %d values = %d' % (index, value))
运行结果如下:
0 1 2 3 4 5 0 1 2 3 4 5 index = 0 values = 0 index = 1 values = 1 index = 2 values = 2 index = 3 values = 3 index = 4 values = 4 index = 5 values = 5
⑦ 列表的其他操作
除了上面的这些常用操作外,还有一些其他的操作,使用代码示例如下:
a_list = [1, 2.0, 'a', True] b_list = [3, 2, 9, 4, 11] # 列表脚本操作符:可以使用+号组合列表,*号重复列表 print(a_list + a_list) print(a_list * 2) # 判断元素是否在列表中 print('a' in a_list) # 获得列表长度 print('列表长度:%d' % len(a_list)) # 统计元素在列表中出现的次数,True的值也是1 print('列表中1出现的次数 %d' % a_list.count(1)) # 统计最大值,最小值,列表元素类型需要为数字 print('列表中的最大值 %d' % max(b_list)) print('列表中的最小值 %d' % min(b_list)) # 排序,本地排序(会修改值),返回None,只能比较数字!默认从小到大, # 从大到小可以用可选参数,括号里加上key = lambda x:-1*x b_list.sort() print('升序排列:%s' % b_list) b_list.sort(key=lambda x: -1 * x) print('降序排列:%s' % b_list) # 列表元素反转,会修改列表,返回None a_list.reverse() print('反转后的列表:%s' % a_list) # extend()函数,在列表末尾一次性追加另一个列表中的多个值 a_list.extend(b_list) print("追加后的列表:",a_list)
运行结果如下:
[1, 2.0, 'a', True, 1, 2.0, 'a', True] [1, 2.0, 'a', True, 1, 2.0, 'a', True] True 列表长度:4 列表中1出现的次数 2 列表中的最大值 11 列表中的最小值 2 升序排列:[2, 3, 4, 9, 11] 降序排列:[11, 9, 4, 3, 2] 反转后的列表:[True, 'a', 2.0, 1] 追加后的列表: [True, 'a', 2.0, 1, 11, 9, 4, 3, 2]
4、元组(Tuple)
元组,「受限的列表」,元组中的元素不能修改,使用
()小括号
表示。如果元组中只有一个元素,需要在元素后添加逗号,比如(1,),否则会被当做括号运算符使用!!!比起列表,元组占用更少的内存,常会用作不能修改的参数传递给函数。除了没有修改元素的函数外,其他的函数和列表基本一致,还提供了一个tuple()函数
用于:将字符串和列表转换为元组。
另外还有一点要注意:
如果在新建变量的时候,没有小括号包裹,只用逗号分隔,Python也会把这个变量认做元组,比如:a = 1,2,3,4,如果此时调用print(type(a)),输出的结果会是:
<class 'tuple'>
。