序列列表
序列是Python中最基本的数据结构,序列中的每个元素都分配一个数字它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
什么是列表?
列表就像数据队伍,一群数据排成一个队伍,可以按照顺序索引来识别数据。Lukas,Robin,Alex一起去惠州大亚湾的黄金海岸旅游,在老虎洲岸边上的沙滩上,Lukas捉到了5只螃蟹,Robin捉到了7只螃蟹,Alex捉到了4只螃蟹;看一下我们用列表如何来展示的。
'''
Welcome to LearnPython.NET
File Name: PDataType.py
Download from:https://www.learnpython.net/cn/python-code-samples.html
Author: LearnPython.Net
Editor: CoderChiu
'''
#捉到的小朋友数量;
nListCabNum = [5,7,4]
#Lukas捉到的螃蟹数量;
print("Lukas's cabs is", nListCabNum[0])
#分别是多少;
print("Lukas, Robin and Alex's cabs is", nListCabNum[0:3])
#Alex的螃蟹是多少;
print("Alex's cabs is", nListCabNum[-1])
执行结果:
>>> %Run PList.py
Lukas's cabs is 5
Lukas, Robin and Alex's cabs is [5, 7, 4]
Alex's cabs is 4
上边的案例,展示的是List的访问元素的办法;变量名 nListCabNum 后边跟随 [0] 就是访问第一个元素;[0:3] 就是从第一个开始的3个元素。[-1]就是反向第一个元素;
如果想看一下有没有小朋友捉到5只螃蟹的;用 In 来判定是否已经在列表中了。
if 5 in nListCabNum:
print("Someone's cabs is 5")
执行结果如下:
>>> %Run PList.py
Someone's cabs is 5
想用 for 循环
一下列表,怎么办呢?
#游客名字是[Lukas, Robin, Alex]
strListVisitor = ["Lukas", "Robin", "Alex"]
#循环访问列表;
for nCrabNum in nListCrabNum:
#找到当前位置;
nPos = nListCrabNum.index(nCrabNum)
print(strListVisitor[nPos], "'s crabs is", nCrabNum)
执行结果如下:
>>> %Run PList.py
Lukas 's crabs is 5
Robin 's crabs is 7
Alex 's crabs is 4
上边的循环中,靠的index来查找数量,但有个问题,如果有重复的,就不会完美的工作了;如何来解决这个问题呢,你想到办法了记得告诉我啊。
如何操作列表?
通过索引来访问列表就可以了。假定有个列表 List,要插入的位置是Index,元素是elements;
在海边捉螃蟹时候,他们认识了一个新朋友Bob,他捉到了9只螃蟹;怎么把Bob和9只螃蟹添加到刚刚的列表中呢?
#Bob
strListVisitor.append("Bob")
print("Visitor:",strListVisitor, "Total = ",len(strListVisitor))
#9只螃蟹;
nListCrabNum.append(9)
print("Crabs:",nListCrabNum, "Total = ", len(nListCrabNum))
调用列表的 append
函数来添加元素;len
来计算列表的长度;执行结果:
>>> %Run PList.py
Visitor: ['Lukas', 'Robin', 'Alex', 'Bob'] Total = 4
Crabs: [5, 7, 4, 9] Total = 4
前边的append
函数把Bob添加到了最后边,我们用 insert
函数可以把元素添加到列表的任务位置;insert
函数的第一个参数就是位置索引信息,从0开始的,如果要插入到最前边,就用0就可以了。
#Bob
strListVisitor.insert(0, "Bob")
print("Visitor:",strListVisitor, "Total = ",len(strListVisitor))
#9只螃蟹;
nListCrabNum.insert(0, 9)
print("Crabs:",nListCrabNum, "Total = ", len(nListCrabNum))
调用insert
函数,把插入的Bob和9都插入到列表的最前边,执行结果:
>>> %Run PList.py
Visitor: ['Bob', 'Lukas', 'Robin', 'Alex'] Total = 4
Crabs: [9, 5, 7, 4] Total = 4
如果用 insert
函数实现和append
一样的效果,该怎么写呢?
Lukas的小伙伴Alex、Bob离开沙滩,去玩摩托艇了,这时候如何把Alex和Bob删除掉呢?pop
函数是删除指定索引位置的元素,默认删除最后一个元素;remove 函数是删除指定值的元素;
#删除Alex
strListVisitor.pop()
print("Visitor:",strListVisitor, "Total = ",len(strListVisitor))
strListVisitor.remove("Bob")
print("Visitor:",strListVisitor, "Total = ",len(strListVisitor))
执行结果:
>>> %Run PList.py
Visitor: ['Bob', 'Lukas', 'Robin'] Total = 3
Visitor: ['Lukas', 'Robin'] Total = 2
把捉到的螃蟹数量,排队一下,会怎么样呢?
#反向排序
print("Visitor:", strListVisitor)
strListVisitor.reverse()
print("Visitor:", strListVisitor)
#按大小排序
print("Crabs:", nListCrabNum)
nListCrabNum.sort()
print("Crabs:", nListCrabNum)
看一看反向排序 reverse
,按大小排序 sort
的执行结果:
>>> %Run PList.py
Visitor: ['Bob', 'Lukas', 'Robin', 'Alex']
Visitor: ['Alex', 'Robin', 'Lukas', 'Bob']
Crabs: [9, 5, 7, 4]
Crabs: [4, 5, 7, 9]
想一想,如果螃蟹数量,按大到小,改怎么排序呢?
补充说明:sort
函数中,有个参数 reverse
默认为False,就是从小到大排序;设置为True 的时候,就是从大到小排序。
#按从大到小排序
print("Crabs:", nListCrabNum)
nListCrabNum.sort(reverse=True)
print("Crabs:", nListCrabNum)
你也来,试一下这个结果,看看对不对!学习Python编程,最主要是自己多试一下,比看再多的书,都管用!