列表知识点
python3常见的数据结构有:数字,字符串,列表,元组(只读列表,不可修改元素),集合,字典。
列表是python最基本的数据结构,如果把变量比作盒子,那么列表就是装在这些变量的盒子。
列表是由一系列按特定顺序排列的元素组成,创建的列表可以包含所有字母,数字0-9,甚至其他列表。列表里的元素之间没有任何关系。一般列表里面包含多个元素,所以我们一般用英文复数命名。创建一个列表:
列表名=[元素1,元素2],用[ ]表示,用逗号分隔其他元素。注意:方括号和逗号都是英文状态下的。
建立列表:students=['Bob','Alice','jim','Mike','Judy']
1.如果我想将将列表打印出来,那么我们可以接着students列表下面一行输入:
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students) #>>>['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
python将打印列表的内部所有,包括方括号,运行结果如上"#>>>"后面所示。所有代码均可直接复制使用,“#>>>"后面是运行结果,我也已经加了#注释掉了。
2.但是这并不是我想看到的结果,我只想输出里面的元素,所以接下来我们学习下如何访问列表元素。
列表是有序集合,因此访问列表任意元素,只需将该元素的位置(索引)告诉python即可。
3.下面展示如何访问列表元素:
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students[0]) #>>>Bob
列表不是从1开始的,是从0开始的 正数索引
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students[1]) #>>>Alice
列表还可以负数索引,这个对于你不知道列表长度的情况下访问最后的元素非常方便。
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students[-1]) #>>>Judy
我们可以向使用其他变量一样使用列表中的各个值了,例如可以使用f字符串根据列表中的值来创建消息。
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
message=f"My classmate is {students[2].title()}"
print(message)
#>>>My classmate is Jim
切片,不包含结束索引 列表[开始索引:结束索引]
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students[0:2]) #>>>['Bob', 'Alice']
如果没有指定第一个索引,自动从头开始
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students[:3]) #>>>['Bob','Alice','Jim']
遍历整个列表第一种方法
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
for i in students:
print(i)
#>>> Bob Alice Jim Mike Judy
遍历整个列表第二种方法
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
for i in range(len(students)):
print(students[i])
#>>> Bob Alice Jim Mike Judy
列表的元素可以是其他元素,可以包含所有字母,数字0-9,布尔值,甚至其他列表
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy',123,True,['a','b']]
for i in students:
print(i)
#>>>Bob Alice Jim Mike Judy 123 True ['a', 'b']
使用len(students))查看列表元素个数
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(len(students)) #>>>5
应用:我们使用列表来绘制一个彩色五角星,绘制边长为120,且每条边有6种颜色(红黄蓝绿橙紫)的五角星。
import turtle#导入海龟绘图库
color_list = ['red','yellow','blue','green','orange','purple']#建立一个颜色列表
for i in range(5):#五角星有5条边
for j in range(6):#五角星每一条边
turtle.pencolor(color_list[j])
turtle.forward(40)#每一段选一个颜色走40,走6次,所以一条边就是240
turtle.right(144)#绘制完一条边转另一条边
turtle.done()
列表中增加新元素 使用append,添加到列表末尾。
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.append('Jack')
print(students)
#>>>['Bob', 'Alice', 'Jim', 'Mike', 'Judy', 'Jack']
在列表中插入元素,使用insert(索引,内容)
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] students.insert(0,'Jack') print(students) #>>>['Jack', 'Bob', 'Alice', 'Jim', 'Mike', 'Judy']
在列表中修改元素,通过索引赋值
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students) #>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] students[0]='jack' print(students) #>>>新列表 ['jack', 'Alice', 'Jim', 'Mike', 'Judy']
删除元素,通过remove,pop,del
remove,不知道索引值,只知道元素。
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
print(students)
#>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy']
students.remove('Bob')
print(students)
#>>>新列表['Alice', 'Jim', 'Mike', 'Judy']
使用del删除,则必须知道索引值
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students) #>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] del students[0] print(students) #>>>新列表['Alice', 'Jim', 'Mike', 'Judy']
pop删除末尾元素,你要删除元素,并接着使用它的值,例如你可能需要刚刚被射杀的外星人的x坐标和y坐标,以便在相应的位置显示爆炸效果。
students=['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] print(students) #>>>原列表['Bob', 'Alice', 'Jim', 'Mike', 'Judy'] students.pop() print(students) #>>>新列表['Alice', 'Jim', 'Mike', 'Judy']
应用:我的抽象画
1、(2019蓝桥杯市赛题)下图是著名的“咖啡墙错觉”图片。图中的灰色线看起来不是向左下倾斜就是向右下倾斜,但实际上它们都是水平线且彼此平行的。已知:
- 每一个正方形的边长长度为50。
- 每一层由13个正方形组成,一共有8层。
- 每一层的的左右偏移量是随机的,偏移范围为(-300,-270),层与层之间的高度为50像素,即正方形的高度。
- 画笔起始绘制坐标为(x,-200)。
每一层第一个正方形填充为黑色,第二个正方形填充为白色,第3个为黑色,以此类推……
import turtle
import random
turtle.speed(0)
turtle.pencolor('gray')
y = -200 #初始位置
for k in range(8): #层数
x = random.randint(-300, -270) #每一层的x坐标位置是随机的
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
for j in range(13): #每一层的个数
if j % 2 == 0:
turtle.fillcolor('black') #偶数用黑色填充
else:
turtle.fillcolor('white') #奇数用白色填充
turtle.begin_fill()
for i in range(4): #画一个正方形
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.end_fill()
y = y + 50 #每一层y坐标位置增加50像素
turtle.done()
本人3年一线编程讲师经验,分享交流,乐高全系列,Scratch , Python,少儿编程。关注我的个人号发送游戏名称获取对应素材。部分素材仍在整理中,陆续会更新,可将需求发到后台



