传送门:https://zhuanlan.zhihu.com/p/126739646
今天学的是列表,列表的定义为:列表是由一系元素按特定顺序构成的数据序列,这样就意味着定义一个列表类型的变量,可以保存多个数据,而且允许有重复的数据。
值得一提的是,列表是可变类型,所以通过索引操作既可以获取列表中的元素,也可以更新列表中的元素。
例子:掷色子统计每个点数出现次数
#掷色子统计每个点数出现次数
counter=[0]*12
for i in range(6000):
point=random.randint(1,6)+random.randint(1,6)
counter[point-1]+=1
for point in range(1,13):
print(f'{point}点出现的次数为{counter[point-1]}次')
列表的方法:
#列表的方法
items=['苍牙','小椒','阿力','小黑','琳']
#用append方法在列表尾部添加新元素
items.append('panking')
print(items)
#使用insert方法在列表中间插入元素
items.insert(3,'panking')
print(items)
#用remove删除指定元素
items.remove('panking') #这里要注意,remove只能删除一个元素,若有多个重名元素,则系统默认删除第一个
print(items)
#用pop删除指定位置元素(用del函数也是一样)
items.pop(3)
print(items)
items.pop(len(items)-1)
print(items)
#清除所有元素
items.clear()
print(items)
#用索引找出元素所在的位置
下面是教程上的代码:
items= ['Python', 'Java', 'Java', 'Go', 'Kotlin', 'Python']
查找元素的索引位置
print(items.index('Python')) # 0
print(items.index('Python', 2)) # 5
#注意:虽然列表中有'Java',但是从索引为3这个位置开始后面是没有'Java'的
print(items.index('Java', 3)) # ValueError: 'Java' is not in list
以下是我在自己写的:
items=[‘苍牙’,‘小椒’,‘阿力’,‘小黑’,‘琳’,‘小黑’]
print(items.index(‘小黑’)) #这里index后面跟的是小括号,我不知道为什么记成了中括号,引以为戒引以为戒…
print(items.index(‘小黑’, 2))
运行结果如下,不知道为什么,跟教学上的执行结果有所差别,在index(,)中输入数字从0到3都不会改变输出结果,只有输入4,5时,系统返回的才是元素’小黑’第二次出现的正确位置,这里等一个有缘人解惑。
统计列表中元素出现的次数:
#用count统计元素出现的次数
items=['苍牙','小椒','阿力','小黑','琳','小黑']
print(items.count('小黑'))
#元素的排列和反转
items=['Python', 'Java', 'Java', 'Go', 'Kotlin', 'Python'] #按由小到大排序是字符串的排序,前天的内容有提及
items.sort()
print(items)
items.reverse()
print(items)
生成列表:
#列表的生成式
items=[x for x in range(1,101) if x%2!=0] #创建一个从1到100只有单数构成的列表
print(items)
用我们以前学的内容也能实现:
items=[]
for x in range(1,101):
if x%2!=0:
items.append(x)
print(items)
在此我们要记住:“强烈建议用生成式语法来创建列表”(我也不知道为什么,反正这样运行时间短)
列表的嵌套:
#列表的嵌套
scores=[[0]*3]*5 #这样创建列表是不行的
print(scores)
scores[0][0]=95
print(scores)
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[95, 0, 0], [95, 0, 0], [95, 0, 0], [95, 0, 0], [95, 0, 0]]
[Finished in 0.1s]
我们发现每个列表中的第一个元素都变成了95,而我们的本意只是让第一个列表中的第一个元素变成95
正确姿势:
scores = [[0] * 3 for _ in range(5)]
scores[0][0] = 95
print(scores) # [[95, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
教学里还有一个很长的图,但我还看不懂,今天就先不放上来了…