数据容器
数据容器含义:
数据容器,能够存储多个元素。
元素:
数据容器中存储的每一份内容。
名字 | 基本格式 | |
列表(List) | [元素1,元素2,,元素3,......] | |
元祖(Tuple) | (元素1,元素2,,元素3,......) | |
字符串(String) | '内容' "内容" '''内容''' """内容""" | |
集合(Set) | {元素1,元素2,,元素3,......} | |
字典(Dict) | {key:value,key:value,......} |
数据容器的特点:
是否支持重复元素,是否可以修改,是否有序等
方法与函数的区别
方法是被放到类里的函数,方法一定是函数,但是函数不一定是方法。
import random
num = random.randint(1, 10)
def sum(a, b):
c = a + b
print(c)
print(num)
sum(1, 10)
上述代码中,random中的randint()是一个方法,而sum是一个函数。
列表的定义
如果一个组只有一个人,那么我们要存储这个人的名字只需要一个字符串就能搞定,但是一个小组有5个人呢?
name_1 = "周芷若"
name_2 = "赵敏"
name_3 = "小昭"
name_4 = "殷离"
name_5 = "朱九真"
像上面一样一个个存储效率太低,我们可以用列表来进行存储。
name = ["周芷若", "赵敏", "小昭", "殷离", "朱九真"]
如果是在一个班级里我们有两个小组,我们需要把两个小组的组员姓名都存储到班级里,那么我们可以使用嵌套的方式,来进行存储。如:
class_01 = [["周芷若", "赵敏", "小昭", "殷离", "朱九真"], ["黄蓉", "穆念慈", "华筝"]]
在某些情况下,我们定义的初始列表暂时不需要存储任何元素,这个时候,我们就可以创建一个空列表(创建空列表可以采用下面两种方式)。
list_01 = []
list_02 = list()
列表的下标索引
列表中的每个元素都有其下标索引,从前往后,索引位置从0开始,依次递增;从后往前,索引位置从-1开始,依次递减。我们可以根据索引,取出特定位置的元素。
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真"]
print(class_01[0])
print(class_01[-5])
在上述代码中,列表class_01中有五个元素,我们根据下标索引,分别取出索引为0和-5的元素,输出后发现索引0和-5的元素都是第一个元素“周芷若”,这是因为元素从前往后数,索引从0开始,从后往前数,索引从-1开始,所以在五个元素的列表中,最终索引0和-5都指向了同一个元素。
如果列表是嵌套关系,那么我们同样可以使用索引的方式取出对应元素。如:
class_01 = [["周芷若", "赵敏", "小昭", "殷离", "朱九真"], ["黄蓉", "穆念慈", "华筝"]]
print(class_01[0][0])
上述代码中,我们先获取了第一个列表的索引,然后获取了第一个列表中第一个元素的索引,最终取出的元素依然是“周芷若”。
下标索引:
相当于容器中每个元素的编号。
正索引:
从0开始,从前往后,依次递增。
负索引:
从-1开始,从后往前,依次递减。
根据下标索引查找对应元素格式:
列表名[索引]
列表的常用操作
我们可以对列表中的元素进行增删改查的操作,列表中提供的这些功能就是列表的方法。
列表的查询:
查找某元素的下标 | 列表.index(元素) |
统计列表内有多少元素 | len(列表) |
统计某元素在列表内的数量 | 列表.count(元素) |
查找指定索引位置上的元素 | 列表名[索引] |
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
print(f"“小昭”在列表class_01中的索引为:{class_01.index('小昭')}")
print(f"列表长度为:{len(class_01)}")
print(f"“赵敏”在列表class_01中出现的次数为:{class_01.count('赵敏')}")
列表的增加:
将指定元素,追加到列表的尾部 | 列表名.append(元素) |
将其它数据容器的内容取出,依次追加到列表尾部 | 列表名.extend(容器) |
在指定下标处,插入指定的元素 | 列表名.insert(索引,元素) |
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
class_02 = ["紫衫龙王", "白眉鹰王", "青翼蝠王", "金毛狮王"]
class_01.append("纪晓芙")
class_01.extend(class_02)
class_01.insert(2,"殷素素")
print(class_01)
列表的修改:
列表名[索引] = 新元素
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
class_01[5] = "殷素素"
列表的删除:
删除列表指定下标元素 | del 列表名[索引] |
取出列表指定下标元素 | 列表.pop(下标) |
从前向后,删除此元素第一个匹配项 | 列表名.remove(元素) |
清空列表 | 列表名.clear() |
删除当前列表 | del 列表名 |
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
class_01.remove("赵敏")
print(class_01)
del class_01[2]
print(class_01)
zhou = class_01.pop(0)
print(zhou)
class_01.clear()
print(class_01)
del class_01
# 该行代码会报错,因为该列表已删除
print(class_01)
列表的遍历
1.for循环遍历:
for 元素名 in 列表:
操作元素
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
for i in class_01:
print(i)
2.while循环遍历:
index = 0
while index < len(列表):
元素名 = 列表[index]
操作元素
index+=1
class_01 = ["周芷若", "赵敏", "小昭", "殷离", "朱九真", "赵敏"]
index = 0
while index < len(class_01):
i = class_01[index]
print(i)
index += 1