序列是Python中最基本的数据结构。Python有6个序列的内置类型 ( 列表、元组、字符串、Unicode 字符串、buffer对象和 xrange 对象 ),但最常见的是列表和元组。序列中的每个元素都分配一个数字 -— 它的位置(或索引),第一个索引是0,第二个索引是1,依此类推。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
接下来,我将着重介绍列表的定义,特性,遍历以及其基本操作(增、删、改、查以及排序)。
一、列表的定义与创建
- 列表的格式:列表名=[元素1 , 元素2 , 元素3 , ... ...]
- 空列表的定义:my_list = [](常用) 或 my_list = list()
- 列表中的元素不需要具有相同的类型。
#定义列表list1,且列表中的元素不具有相同的类型
>>> list1=['zhangsan','male',20,50,'13729278528']
>>> type(list1)
<class 'list'>
#创建空列表my_list
#方法一(常用)
>>> my_list=[]
>>> type(my_list)
<class 'list'>
#方法二
>>> my_list=list()
>>> type(my_list)
<class 'list'>
二、列表的特性
- 与元组不同,列表中的元素可以修改;
- 列表里面也是可以嵌套列表的;
- 列表的元素可以是整型,浮点数,复数,布尔类型,也可以是字符串;
- 列表是一种有序的集合,每个元素都有一个位置(即索引,索引从0开始),故列表可以进行截取、组合等。
三、列表的基本操作
1、 查找列表中的值
1.1> 使用下标索引来访问列表中的值,也可以使用方括号的形式进行截取,如下所示:
>>> list1=['zhangsan','male',20,50,'13729278528']
>>> list1[1] #获取列表list1中的第二个元素
'male'
>>> list1[-1] #获取列表list1中的倒数第一个元素
'13729278528'
>>> list1[1:] #获取列表list1中第二个到最后一个元素
['male', 20, 50, '13729278528']
>>> list1[:3] #获取列表list1中第一个到第三个元素(含左不含右)
['zhangsan', 'male', 20]
>>> list1[1:3] #获取列表list1中第二个到第三个元素(含左不含右)
['male', 20]
1.2> list.index(obj):从列表中找出某个值第一个匹配项的索引位置
list1=['zhangsan','male',20,50,'13729278528',20]
a=list1.index(20) #从列表中找出元素20的第一个匹配项的索引位置
print(a)
运行结果:
2
2、增加列表中的元素(append,insert,extend)
2.1> list.append(obj):在列表的末尾添加新的对象
list1=['zhangsan','male',20,50,'13729278528']
list1.append(160)
print(list1)
list1.append(['西安','北京']) #实现列表的嵌套
print(list1)
运行结果:
['zhangsan', 'male', 20, 50, '13729278528', 160]
['zhangsan', 'male', 20, 50, '13729278528', 160, ['西安', '北京']]
2.2> list.insert(index , obj):在列表的指定位置增加元素;如果指定的位置不存在,默认会增加在列表末尾。
list1=['zhangsan','male',20,50,'13729278528']
list1.insert(4,160) #向列表的第五个位置插入160
print(list1)
list1.insert(1,['西安','北京']) #向列表的第二个位置插入['西安','北京']
print(list1)
list1.insert(8,'大学') #'8'超出索引范围,添加到列表的末尾
print(list1)
运行结果:
['zhangsan', 'male', 20, 50, 160, '13729278528']
['zhangsan', ['西安', '北京'], 'male', 20, 50, 160, '13729278528']
['zhangsan', ['西安', '北京'], 'male', 20, 50, 160, '13729278528', '大学']
2.3> list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list1=['zhangsan','male',20,50,'13729278528']
list2=['momo','famale',18,45,'13729669270']
list1.extend(list2)
print(list1)
运行结果:
['zhangsan', 'male', 20, 50, '13729278528', 'momo', 'famale', 18, 45, '13729669270']
3、修改列表中的元素
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改。
list1=['zhangsan','male',20,50,'13729278528']
list1[3]=55
print(list1)
list1[2:]=[21,60,'19802979883'] #切片进行修改
print(list1)
运行结果:
['zhangsan', 'male', 20, 55, '13729278528']
['zhangsan', 'male', 21, 60, '19802979883']
4、删除列表中的元素(del,pop,remove)
4.1> del list(index):根据列表的下标,对指定位置的元素进行删除
list1=['zhangsan','male',20,50,'13729278528']
del list1[3] #删除列表中的第四个元素
print(list1)
运行结果:
['zhangsan', 'male', 20, '13729278528']
4.2> list.pop(index):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list1=['zhangsan','male',20,50,'13729278528']
list1.pop() #默认移除列表中的最后一个元素
print(list1)
list1.pop(2) #移除列表中的第三个元素
print(list1)
运行结果:
['zhangsan', 'male', 20, 50]
['zhangsan', 'male', 50]
4.3> list.remove(obj):移除列表中某个值的第一个匹配项
list1=['zhangsan','male',20,50,'13729278528',20]
list1.remove(20) #移除列表中元素20的第一个匹配项
print(list1)
运行结果:
['zhangsan', 'male', 50, '13729278528', 20]
5、列表的排序
5.1> list.sort() / list.reverse():对列表进行升序排列
5.2> list.sort(reverse=True):对列表进行降序排列
>>> list1=[1,3,8,5,10,-1]
>>> list1.sort() #升序排列
>>> print(list1)
[-1, 1, 3, 5, 8, 10]
>>> list1.sort(reverse=1) #sort(reverse=True),降序排列
>>> print(list1)
[10, 8, 5, 3, 1, -1]
>>> list1.reverse() #升序排列
>>> print(list1)
[-1, 1, 3, 5, 8, 10]
四、列表的常用操作符
- len()可以求取列表的长度
- + 号用于组合列表,* 号用于重复列表
- in,not in 判断元素是否在列表中
- for x in [1, 2, 3]: print(x) 列表的遍历
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print (x) | 1 2 3 | 迭代 |
五、Python列表函数&方法
六、列表的遍历
#创建一个列表,里面的元素分别为1,2,3,...10
list1 = [i for i in range(1,11)]
print(list1)
#创建一个列表,里面的元素分别是1-10中的偶数
list2 = [i for i in range(1,11) if i % 2 == 0]
print(list2)
#列表中有多个元素,每个元素的类型为元组
list3 = [(i,j) for i in range(1,4) for j in range(6,9)]
print(list3)
#实现分组一个列表里的元素,比如将列表a[1,2,3,...,14] 变成 列表b[[1,2,3],[4,5,6]....]
a = [x for x in range(1,15)]
b = [a[x:x+3] for x in range(0,len(a),3)]
print(b)
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10]
[(1, 6), (1, 7), (1, 8), (2, 6), (2, 7), (2, 8), (3, 6), (3, 7), (3, 8)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14]]