Python中的列表详解

一、列表是什么?

List是python中的一种数据类型,它由一组有序的元素组成。支持字符、数字、字符串甚至也可以包含列表(列表中有列表,嵌套),元素间用逗号进行分隔。

列表用[]进行标识。

 

二、列表的访问与操作

1.列表的定义

(1)定义一个空列表:

list_stu1 = []

list_stu2 = list()

 

(2)定义一个有学生信息的列表:

list_stu1 = ['张三',19,'男','长沙',13434343434] #使用一个列表存一个学生的基本信息 

print(list_stu1) 

list_stu2 = [['张三',19,'男','长沙',13434343434], #通过列表嵌套存多个学生的信息 

                 ['李四',18,'男','武汉',13535353535], 

                 ['王五',22,'女','上海',13636363636]] 

print(list_stu2)

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434]

[[‘张三’, 19, ‘男’, ‘长沙’, 13434343434], [‘李四’, 18, ‘男’, ‘武汉’, 13535353535], [‘王五’, 22, ‘女’, ‘上海’, 13636363636]]

 

2.列表的访问

列表是有序的集合,要访问其中的元素,可以通过下标的方式进行访问(类似数组访问)

 

(1)下标是从0开始,最长不超过len(list)-1

存在学生信息列表:

list_stu1 = ['张三',19,'男','长沙',13434343434] 

print(len(list_stu1)) print(list_stu1[0]) #取出学生信息的姓名 

print(list_stu1[1]) #取出学生信息的年龄 

print(list_stu1[len(list_stu1)]) #报错,越界

 

(2)可以通过list[头下标:尾下标]的方式截取列表元素(闭头开尾原则)

访问列表需注意:

1、从左到右:从0开始代表第一个数值, 1代表第二个数值 往后以此类推

2、从右到左:从-1开始代表最后一个值,-2代表倒数第二个值 往前以此类推

 

只打印学生的年龄及性别:

print(list_stu1[1:3]) #下标是从0开始,且尾下标是3 

print(list_stu1[-4:-2]) #从右边开始下标从1开始,且开尾原则

 

查看姓名外的所有信息:

print(list_stu1[1:]) #尾下标不填,默认取到元素的最后一个 

print(list_stu1[-4:]) 

print(list_stu1[1:len(list_stu1)+1]) #由于尾下标是开区间,因此最大为len(list)+1

 

(3)访问嵌套列表

存在嵌套列表

list_stu2 = [['张三',19,'男','长沙',13434343434], 

                ['李四',18,'男','武汉',13535353535], 

                 ['王五',22,'女','上海',13636363636]]

 

取出第一个学生的所有信息:

print(list_stu2[0])

 

打印第一个学生的年龄:

print(list_stu2[0][1]) #看成一个二维数组进行访问

 

3.修改列表的值

修改list_stu2中第二个学生的年龄加1

list_stu2[1][1] = list_stu2[1][1]+1 

print(list_stu2)

 

4.列表的连接与重复操作

加号(+)是列表连接运算符

星号()是重复操作*

list_stu3 = list_stu1 + list_stu2 #连接两个列表 

print(list_stu3)

 

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434, [‘张三’, 19, ‘男’, ‘长沙’, 13434343434], [‘李四’, 18, ‘男’, ‘武汉’, 13535353535], [‘王五’, 22, ‘女’, ‘上海’, 13636363636]]

 

print(list_stu1 * 2) #将list_stu1输出两次

 

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434, ‘张三’, 19, ‘男’, ‘长沙’, 13434343434]

 

三、列表的常用方法

L.append(var) #追加元素

list_stu1.append('12345678@hnxmxit.com') #添加12345678@hnxmxit.com元素 

list_stu3= ['赵六',18,'男','武汉',13535353535] 

list_stu2.append(list_stu3) #追加列表 

print(list_stu1) 

print(list_stu2)

 

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434, ‘12345678@hnxmxit.com’]

[[‘张三’, 19, ‘男’, ‘长沙’, 13434343434], [‘李四’, 18, ‘男’, ‘武汉’, 13535353535], [‘王五’, 22, ‘女’, ‘上海’, 13636363636], [‘赵六’, 18, ‘男’, ‘武汉’, 13535353535]]

L.insert(index,var) #在指定位置插入元素

 

在列表的第2个位置插入身份证号

list_stu1.insert(1,'431123201912071234') #指定位置插入

L.pop(var) #返回最后一个元素,并从list中删除之

 

list_stu1.pop() #删除最后一个元素 

list_stu1.pop(3) #删除指定位置的元素

L.remove(var) #删除第一次出现的该元素

 

list_stu1.remove(19) #删除第一次出现的指定元素 

list_stu1.remove('newdream') #报错,列表不存在指定元素

L.count(var) #该元素在列表中出现的个数

 

print(list_stu1.count(19)) #统计指定元素出现的次数,并返回次数

L.index(var) #该元素的位置,无则抛异常

 

print(list_stu1.index('男')) #返回元素所在的位置 

print(list_stu1.index('newdream')) #抛异常,不存在该元素

L.extend(list) #追加list,即合并list到L上

 

a = 'newdream' 

list = ['newdream'] 

list_stu1.extend(a) #将变量的值合并到列表,并拆分成为列表的元素 

list_stu1.extend(list) #将另一个列表合并到列表

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434, ‘n’, ‘e’, ‘w’, ‘d’, ‘r’, ‘e’, ‘a’, ‘m’, ‘newdream’]

L.sort() #排序

list_stu1.sort() #报错,类型不统一 

list1 = [0,1,0,3,1,8] 

list2= ['c','y','a','b'] 

list1.sort() #按数值的升序排序,且会改变原列表的顺序 

print(list1) 

list2.sort() #按字母的升序排序,且会改变原列表的顺序 

print(list2)

L.reverse() #反转

 

list_stu1 = ['张三',19,'男','长沙',13434343434] 

list_stu1.reverse() #反转列表元素 

print(list_stu1)

[13434343434, ‘长沙’, ‘男’, 19, ‘张三’]

 

四、列表的拷贝

列表的拷贝有两种:

1.通过指向同一地址,使两个列表指向同一个内存地址,从而实现拷贝。

好比人都有名字,有些有小名,但是指的都是同一个人,当这个人换了衣服,那不管叫的是这个人的名字还是小名,都是指这个换了衣服的人

list_stu1 = ['张三',19,'男','长沙',13434343434] 

list_stu3 = list_stu1 #两个列表指向同一个地址 

list_stu3[0]='拷贝的张三' #当一个列表修改元素值时,两个列表都相应的做修改了 

print(list_stu3) 

print(list_stu1) 

print(id(list_stu1)) #指向的是同一个内存地址 

print(id(list_stu3))

 

[‘拷贝的张三’, 19, ‘男’, ‘长沙’, 13434343434]

[‘拷贝的张三’, 19, ‘男’, ‘长沙’, 13434343434]

 

2.将列表的元素拷贝给了另一个列表,且两个列表间的元素互不影响

list_stu1 = ['张三',19,'男','长沙',13434343434] 

list_stu3 = list_stu1[:] #将所有元素赋给另一个列表 

list_stu3[1] = 20 #当修改一个列表的值时,另一个列表的元素不受影响 

print(list_stu1) 

print(list_stu3) 

print(id(list_stu1)) 

print(id(list_stu3))

 

[‘张三’, 19, ‘男’, ‘长沙’, 13434343434]

[‘张三’, 20, ‘男’, ‘长沙’, 13434343434]

18695672

18696832