列表定义
定义一个学生信息的列表
student = ["name","sex","grade","sno"]
字符串用双引号 或者单引号引起来,数字不用
打印列表的第三个数据(年级)
>>> print(student[2]) #列表和数组一样,索引是从0开始的
grade
计算列表中的数据项,或者是某个数据的长度:len()
>>> print(len(student))
4
向列表添加或删除数据项
在列表末尾追加数据项:append()
在列表末尾追加数据项集合:extend()
在列表末尾删除数据项,或删除指定位置的数据项:pop()
>>> student.append("cno") #在list列表末尾添加课程号cno的列表项
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno']
>>> student.pop() #删除list末尾的列表项
'cno'
>>> print(student)
['name', 'sex', 'grade', 'sno']
>>> student.pop(2) #删除指定索引的数据项,第三个数据项
'grade'
>>>print(student)
['name', 'sex', 'sno']
>>> student.extend(["cno","pno","age"]) #给list末尾追加一个数据项集合
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
删除特定的数据项:remove()
在特定位置增加数据项:insert()
查看数据项位置:index()
>>> student.remove("sno") #删除数据项学号sno
>>> print(student)
['name', 'sex', 'grade', 'cno', 'pno', 'age']
>>> student.index("grade") #查看grade的索引位置
2
>>> student.insert(3,"sno") #给索引为3的位置添加数据项学号sno,实际是第4项数据项
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
在python中,一个列表可以添加混合类型的数据
>>> student.insert(4,2019001001) #添加学号,注意索引为4的位置插入后是列表第五个数据项
>>> print(student)
['name', 'sex', 'grade', 'sno', 2019001001, 'cno', 'pno', 'age']
列表数据的处理
统计列表某个数据项的个数:count()
>>> num = [1,2,3,3,2,2,4,5,6,4,6,7]
>>> num.count(2) #统计列表中2的个数
3
倒序排列:reverse()
正向排列:sort()
>>> student = ['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
>>> student.reverse() #这里的倒序,是把列表里面的数据,从后往前排列
>>> student
['age', 'pno', 'cno', 'sno', 'grade', 'sex', 'name']
>>> student.reverse() #再次倒序,会回到原来的列表数据
>>> student
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
>>> student.sort() #正向排列是对其进行大小排列(从小到大)
>>> student
['age', 'cno', 'grade', 'name', 'pno', 'sex', 'sno']
如果需要打印一个数组中的数据项时,使用print
来一个一个打印显然不可能,这时使用for
语句就可以简单很多,for
循环可以处理任意大小的列表
for 目标标识符 in 列表名:
列表处理代码
实例:
>>> student = ['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
>>> for i in student:
print(i)
name
sex
grade
sno
cno
pno
age
配合使用函数对列表进行排列
倒序排列函数:reversed()
正向排列函数:sorted()
>>> student = ['age', 'cno', 'grade', 'name', 'pno', 'sex', 'sno']
>>> student1 = []
>>> for i in reversed(student): #将数据项倒序排列并遍历
student1.append(i)
>>> print(student1)
['sno', 'sex', 'pno', 'name', 'grade', 'cno', 'age']
>>> student2 = []
>>> for i in sorted(student): #将数据项正向排列并遍历
student2.append(i)
>>> print(student2)
['age', 'cno', 'grade', 'name', 'pno', 'sex', 'sno']
除了使用for
语句外,while
语句也可打印列表数据项,不同的是while
需要有状态信息的判断,相对来说使用for
会好点,接下来就是while
的使用示例:
>>> count = 0
>>> while count<len(student):
print(student[count])
count += 1
name
sex
grade
sno
cno
pno
age
处理列表中列表
>>> student.insert(7,[123,456,789])
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age', [123, 456, 789]]
访问列表中的列表:
>>> print(student[7][2]) #访问第八个数据项里的第三个数据项
789
如果for
循环对整个嵌套列表的列表处理,显然会把内列表当作一个数据项,如下:
>>> for i in student:
print(i)
name
sex
grade
sno
cno
pno
age
[123, 456, 789]
这时我们不防结合if
语句来解决这个问题
if 满足条件 :
true组(满足条件时需要做的事情)
else:
false组(不满足条件时需要做的事情)
检查数据类型:isinstance() #会返回bool值
实例:
>>> for i in student:
if isinstance(i,list): #如果当前项是一个列表,则用for来处理这个列表
for j in i:
print(j)
else:
print(i)
name
sex
grade
sno
cno
pno
age
123
456
789
对于上面这种两层的嵌套列表处理的不错,可是遇到三层嵌套列表或者更多层,最里的列表就不能正确处理了,当然三层嵌套可以再加一个for和if
的语句,可是过多的列表嵌套就太过复杂了,这时我们不妨创建一个函数实现递归
def 函数名 (参数):
函数代码组
实例:
函数:
def lol (List):
for i in List:
if isinstance(i,list): #如果是列表就继续循环,不是就打印数据项
lol(i)
else:
print(i)
使用:
>>> student[7].append(["ni","wo","ta"]) #插入一个列表来测试
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age', [123, 456, 789, ['ni', 'wo', 'ta']]]
>>> lol(student) #调用函数
name
sex
grade
sno
cno
pno
age
123
456
789
ni
wo
ta