列表定义
定义一个学生信息的列表
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.extend(["cno","pno","age"]) #给list末尾追加一个数据项集合
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
删除特定的数据项:remove()
在特定位置增加数据项:insert()
>>> student.remove("sno") #删除数据项学号sno
>>> print(student)
['name', 'sex', 'grade', 'cno', 'pno', 'age']
>>> student.insert(3,"sno") #给3+1的位置添加数据项学号sno
>>> 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']
列表数据的处理
如果需要打印一个数组中的数据项时,使用print
来一个一个打印显然不可能,这时使用for
语句就可以简单很多,for
循环可以处理任意大小的列表
for 目标标识符 in 列表名:
列表处理代码
实例:
>>> print(student)
['name', 'sex', 'grade', 'sno', 'cno', 'pno', 'age']
>>> for i in student:
print(i)
name
sex
grade
sno
cno
pno
age
除了使用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