序列列表

序列是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编程,最主要是自己多试一下,比看再多的书,都管用!

Last updated