python之列表

列表定义

定义一个学生信息的列表

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
上一篇:Java面试题-数据库篇十二


下一篇:MySQL 45道练习题