文章目录

  • 一、数据容器
  • 数据容器特点对比
  • 二、序列
  • 三、列表(list)
  • 3.1、列表定义:
  • 3.2、列表下标索引
  • 3.3、列表常用方法:
  • 3.4、list遍历
  • 四、元组(tuple)
  • 4.1、元组定义
  • 4.2、元组的常用方法
  • 4.3、元组的遍历
  • 五、字符串(str)
  • 5.1、字符串定义
  • 5.2、常用方法
  • 5.3、字符串遍历
  • 六、序列切片
  • 语法
  • 示例:
  • 七、集合(set)
  • 7.1、集合定义
  • 7.2、常用方法
  • 7.3、遍历集合
  • 八、字典(dict)
  • 8.1、字典定义
  • 8.2、常用方法
  • 8.3、遍历字典
  • 九、容器通用常用功能


一、数据容器

数据容器是一种可以容纳多份数据的数据类型,容纳的每一份数据类型称之为1个元素。每一个元素可以是任意类型的数据。

数据容器特点对比

列表(list)

元组(tuple)

字符串(str)

集合(set)

字典(dict)

元素数量

支持多个

支持多个

支持多个

支持多个

支持多个

元素类型

任意

任意

仅字符

任意

k:v

下标索引

支持

支持

支持

不支持

不支持

重复元素

支持

支持

支持

不支持

不支持

可修改性

支持

不支持

不支持

支持

支持

数据有序






是否支持while循环






使用场景

可修改、可重复

不可修改、可重复

一串字符

不可重复

以key检索value

二、序列

序列是指:内容连续、有序,可以使用下标索引的一类数据容器
列表(list)、元组(tuple)、字符串(str)均可以视为序列。

python 容器化 python存放数据的容器_元组

如上图,序列的典型特征就是:有序可用下标索引,字符串、元组、列表均满足这个要求

三、列表(list)

3.1、列表定义:

# 字面量
["tai", "bai", "python"]
# 定义变量
name = ["tai", "bai", "python"]
# 定义空列表
name = []
name = list()
# 嵌套列表
message = [[1, 2, 3], ["tai", "bai", "python"], [21, 22, 25]]

3.2、列表下标索引

列表的每一个元素,都有编号称之为下标索引
从前向后的方向,编号从0开始递增
从后往前的方向,编号从-1开始递减

通过下标获取对应位置的元素

列表[下标]

# 通过下标索引取出对应位置的数据
my_list = ["Tom", "Lily", "Rose"]
print(my_list[0])
print(my_list[1])
print(my_list[2])
# 通过下标索引去除数据(倒序取出)
print(my_list[-1])
print(my_list[-2])
print(my_list[-3])

注意:

要注意下标索引的取值范围,超出范围无法取出元素,并且会报错(IndexError: list index out of range)

3.3、列表常用方法:

方法

作用

列表.append(元素)

向列表中追加一个元素

列表.extend(容器)

将数据容器的内容依次去除,追加到列表尾部

列表.insert(下标, 元素)

在指定下标出,插入指定的元素

del 列表[下标]

删除列表指定下标元素

列表.pop(下标)

删除列表指定下标元素(返回删除的元素)

列表.remove(元素)

从前向后,删除此元素第一个匹配项

列表.clear()

清空列表

列表.count(元素)

统计此元素在列表中出现的次数

列表.index(元素)

查找指定元素在列表的下标(找不到报错ValueError)

len(列表)

统计容器中有多少元素

示例:

# 1.1 查找某元素在列表内的下标索引
index = name.index("tai")
print(f"tai在list的下标为{index}")

# 1.2 如果被查找的元素不存在,会报错   ValueError: 'li' is not in list
# index = name.index("li")
# print(f"li在list的下标为{index}")

# 2、修改特定下标索引的值
name[1] = "libai"
print(name)

# 3、在指定下标位置插入新元素
name.insert(1, "li")
print(name)

# 4、在列表的尾部追加  单个  新元素
name.append("bai")
print(name)

# 5、在列表的尾部追加  一批  新元素
name.extend(["java", "mysql"])
print(name)
# 6、 删除指定下标的元素 (两种方法)
# 6.1 方式1:del 列表[下标]
del name[2]
print(name)
# 6.2 方式2:列表.pop(下标)
element = name.pop(2)
print(f"通过pop取出元素后列表内容为:{name},取出的元素为{element}")

# 7、删除某元素在列表中的第一个匹配项
name.remove("tai")
print(name)

# 8、清空列表
# name.clear()
# print(name)
# 9、统计列表内某元素的数量
count = name.count("bai")
print(f"bai在列表中出现了{count}次")
# 10、统计列表中全部的元素数量
len = len(name)
print(f"name一个有{len}个元素")

3.4、list遍历

def list_while_func():
    """
    使用while循环遍历列表的演示函数
    :return: None
    """
    my_list = ["li", "tai", "bai"]
    # 循环控制变量通过下标索引来控制,默认0
    # 每一次循环将下标索引变量+1
    # 循环条件: 下标索引变量 < 列表的元素数量

    # 定义一个变量用来标记列表的下标
    index = 0           # 初始值的下标为0
    while index < len(my_list):
        print(my_list[index])
        index += 1

# list_while_func()
def list_for_func():
    """
    使用for循环遍历列表的演示函数
    :return: None
    """
    my_list = [1, 2, 3, 4, 5]
    # for 临时变量 in 数据容器:
    for i in my_list:
        print(i)

四、元组(tuple)

4.1、元组定义

# 定义元组字面量
("taibai", 666, True)
# 定义元组变量
t1 = ("taibai", 666, True)
# 定义空元组
t2 = ()
t3 = tuple()
# 嵌套元组
t5 = ((1, 2, 3), (4, 5, 6))

4.2、元组的常用方法

在上述数据容器的描述中,已描述元组是不可修改的,所以并没有 增删改的操作

方法

作用

元组.index(元素)

查找某个元素,如果数据存在返回对应下标,否则报错(ValueError: tuple.index(x): x not in tuple)

元组.count(元素)

统计某个元素在当前元组出现的次数

len(元组)

统计元组中的元素个数

示例:

# 元组的操作: index查找方法
t6 = ("tai", "bai", "python", "python")
index = t6.index("bai")
print(f"bai出现在元组的下标为{index}")

# 元组的操作:count统计方法
count = t6.count("python")
print(f"python在元组中出现了{count}次")

# 元组的操作: len函数统计元祖元素数量
len = len(t6)
print(f"t6元组一共有{len}个元素")

4.3、元组的遍历

t6 = ("tai", "bai", "python", "python")
def tuple_while_func():
    i = 0
    while i < len:
        print(t6[i])
        i += 1

# 元组的遍历: for
def tuple_for_func():
    for i in t6:
        print(i)

五、字符串(str)

尽管字符串看起来并不像列表、元组那样,看起来存放了许多数据的容器
但不可否认,字符串也是数据容器的一员
并且字符串也是一个无法修改的数据容器,每次修改只是得到了一个新的字符串

5.1、字符串定义

# 字面量
'taibai'
"taibai"
# 定义变量
name = 'taibai'
name = "taibai"
name = """taibai"""
# 定义空字符串
str1 = ''
str2 = ""
str3 = """"""
str4 = str()

5.2、常用方法

方法

作用

字符串[下标]

根据下标索引去除特定位置字符

字符串.index(字符串)

给定字符的第一个匹配项的下标

字符串.replace(字符串1,字符串2)

将字符串内的全部字符串1,替换为字符串2(并不会修改原字符串,而是得到一个新的字符串)

字符串.split(字符串)

按照给定字符串,对字符串进行分割,不会修改原字符串,而是得到一个新的列表

字符串.strip()

移除首尾的空格和换行符

字符串.strip(字符串)

移除首尾的指定字符串(此处是按照单个字符去除)

字符串.count(字符串)

统计字符串内某字符串的出现次数

len(字符串)

统计字符串的字符个数

示例:

my_str = "My name is taibai"
# 通过下标索引取值
value = my_str[5]
value2 = my_str[-4]
print(f"从字符串{my_str}取下标为5得值为:{value},取下标为-4的值为:{value2}")
# index方法
value = my_str.index("is")
print(value)
# replace方法
my_str1 = my_str.replace("taibai", "taibai_yuan")
print(my_str1)
# split方法
my_list = my_str.split(" ")
print(my_list)
# strip方法 不添加参数去除前后空格 添加参数去除前后参数
my_str = "  My name is taibai  "
my_aa = my_str.strip()
print(my_aa)
my_str = "123My name is taibai321"
my_bb = my_str.strip("123")
print(my_bb)
# 统计字符串中某字符串的出现次数
count = my_str.count("a")
print(f"在{my_str}中a出现了{count}次")
# 统计字符串的长度
num = len(my_str)
print(f"{my_str}长度为{num}")

5.3、字符串遍历

my_str = "My name is taibai"

# 使用while循环遍历
index = 0
while index < len(my_str):
    print(my_str[index])
    index += 1

# 使用for循环遍历
for i in my_str:
    print(i)

六、序列切片

语法

序列[起始下标:结束下标:步长]

表示从序列中,从指定位置开始,依次去除元素,到指定位置结束,得到一个新的序列

  • 起始下标:表示从何处开始,可以不写,不写表示从头开始
  • 结束下标:表示从何处结束,可以不写,不写表示截取到结尾
  • 步长:表示依次取元素的间隔(可以为负数,表示倒序执行)

注意:

此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)

示例:

# 对list进行切片,从1开始,4结束,步长为1
my_list = [0, 1, 2, 3, 4, 5, 6]
result = my_list[1:4]       # 步长默认为1,可以不写
print(result)

# 对tuple进行切片,从头开始,到最后结束,步长为1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result1 = my_tuple[:]       # 起始和结束不写,表示从头到尾  步长默认为1,也可以不写
print(result1)

# 对str进行切片,从头开始,到最后结束,步长为2
my_str = "0123456"
result2 = my_str[::2]
print(result2)
# 对str进行切边,从头开始,到最后结束,步长为-1
result3 = my_str[::-1]
print(result3)

# 对列表进行切片,从3开始,到1结束,步长为-1
result4 = my_list[3:1:-1]
print(result4)
# 对元组进行切片,从头开始,到尾结束,步长为-2
result5 = my_tuple[::-2]
print(result5)

七、集合(set)

7.1、集合定义

# 定义集合字面量
{"my", "name", "taibai", "python"}
# 定义集合变量
my_set = {"my", "name", "taibai", "python"}
# 定义空集合
my_set1 = set()

使用下列代码结果可看为 去重且无序

my_set = {"my", "name", "taibai", "python", "python", "python", "python"}
my_set1 = set()
print(my_set)

python 容器化 python存放数据的容器_字符串_02

7.2、常用方法

方法

作用

集合.add(元素)

集合内添加一个元素

集合.remove(元素)

移除集合内指定的元素

集合.pop()

从集合中随机取出一个元素(并返回取出的元素)

集合.clear()

将集合清空

集合1.difference(集合2)

得到一个新集合,内含2个集合的差集(原有2个集合内容的不变)

集合1.difference_update(集合2)

在集合1中,删除集合2中存在的元素(集合1被修改,集合2不变)

集合1.union(集合2)

得到1个新集合,内含2个集合的全部元素(原有的2个集合内容不变)

len(集合)

得到一个整数,记录了集合的元素数量

示例:

my_set = {"my", "name", "taibai", "python"}
# 添加新元素
my_set.add("taibai_yuan")
print(my_set)
# 移除元素
my_set.remove("my")
print(my_set)
# 随机取出一个元素
string = my_set.pop()
print(string)
print(my_set)
# 清空集合
my_set.clear()
print(my_set)
# 取2个集合的差集
set1 = {"tai", "bai", "yuan"}
set2 = {"my", "name", "tai", "yuan"}
set3 = set1.difference(set2)
print(set1)
print(set2)
print(set3)
# 消除两个集合的差集
set1.difference_update(set2)
print(set1)
print(set2)
# 2个集合合并为1个
set1 = {"tai", "bai", "yuan"}
set2 = {"my", "name", "tai", "yuan"}
set3 = set1.union(set2)
print(set3)

# 统计集合元素数量
count = len(set1)
print(count)

7.3、遍历集合

由于集合无序,不可使用下标。所以不能使用while进行循环遍历

# 集合遍历
for i in set1:
    print(i)

八、字典(dict)

8.1、字典定义

# 定义字典字面量
{"taibai": 21, "yuan": 19, "libai": 30, "zhangsan": 10}
# 定义字典变量
my_dict = {"taibai": 21, "yuan": 19, "libai": 30, "zhangsan": 10}
# 定义空字典
my_dict1 = dict()
my_dict2 = {}

注意:

  • 每一份数据都是k-v键值对
  • 可用于通过key获取value,key不可重复(重复会覆盖)

8.2、常用方法

方法

作用

字典[key]

获取指定key对应的value值

字典[key] = value

添加或更新键值对

字典.pop(key)

取出key对应的value并在字典内删除此key的键值对

字典.clear()

清空字典

字典.keys()

获取字典的全部key,可以用来for循环遍历字典

len(字典)

计算字典内的元素数量

示例:

my_dict = {"张三": 99, "李四": 88, "王五": 77}
# 获取指定key对应的value值
value = my_dict["张三"]
# 新增元素
my_dict["太白"] = 100
print(my_dict)
# 更新元素
my_dict["太白"] = 150
print(my_dict)
# 删除元素
value = my_dict.pop("张三")
print(value)
print(my_dict)
# 清空元素
my_dict.clear()
print(my_dict)

# 获取全部的key
my_dict = {"张三": 99, "李四": 88, "王五": 77}
dict_set = my_dict.keys()
print(dict_set)

8.3、遍历字典

# 遍历字典
# 方式一:获取到所有的key来遍历key获取dict的元素
for i in dict_set:
    print(f"{i}:{my_dict[i]}")
# 方式二:直接使用for循环就可以获取到dict的key
for i in my_dict:
    print(f"{i}:{my_dict[i]}")

九、容器通用常用功能

功能

作用

通用for循环

遍历容器(字典是遍历key)

max()

容器内最大元素

min()

容器内最小元素

len()

容器元素个数

list()

转换为列表

tuple()

转换为元组

str()

转换为字符串

set()

转换为集合

sorted(序列,[reverse=True])

排序,reverse=True 表示降序(得到一个排好序的序列)

注意:

  • 字典转换为字符串并不会又影响
  • 字典转换为列表会将value丢失
  • 字典转换为元组会将value丢失
  • 字典转换为集合会将value丢失
  • 其余容器转字典,由于其余数据容器并无键值对,所以无法转字典

示例:

my_list = [3, 1, 2, 8, 0]
my_tuple = (3, 1, 2, 8, 0)
my_str = "cdiracl"
my_set = {3, 1, 2, 8, 0}
my_dict = {"key1": 1, "key3": 3, "key2": 2}

# len元素
print(f"列表 元素个数有:{len(my_list)}")
print(f"元组 元素个数有:{len(my_tuple)}")
print(f"字符串 元素个数有:{len(my_str)}")
print(f"集合 元素个数有:{len(my_set)}")
print(f"字典 元素个数有:{len(my_dict)}")

# max最大元素
print(f"列表 元素最大元素有:{max(my_list)}")
print(f"元组 元素最大元素有:{max(my_tuple)}")
print(f"字符串元素最大元素有:{max(my_str)}")
print(f"集合 元素最大元素有:{max(my_set)}")
print(f"字典 元素最大元素有:{max(my_dict)}")

# min最小元素
print(f"列表 元素最小元素有:{min(my_list)}")
print(f"元组 元素最小元素有:{min(my_tuple)}")
print(f"字符串元素最小元素有:{min(my_str)}")
print(f"集合 元素最小元素有:{min(my_set)}")
print(f"字典 元素最小元素有:{min(my_dict)}")

# 类型转换:容器转列表
print(f"列表 转列表有:{list(my_list)}")
print(f"元组 转列表有:{list(my_tuple)}")
print(f"字符串转列表有:{list(my_str)}")
print(f"集合 转列表有:{list(my_set)}")
print(f"字典 转列表有:{list(my_dict)}")
# 类型转换:容器转元组
print(f"列表 转元组有:{tuple(my_list)}")
print(f"元组 转元组有:{tuple(my_tuple)}")
print(f"字符串转元组有:{tuple(my_str)}")
print(f"集合 转元组有:{tuple(my_set)}")
print(f"字典 转元组有:{tuple(my_dict)}")
# 类型转换:容器转字符串
print(f"列表 转字符串有:{str(my_list)}")
print(f"元组 转字符串有:{str(my_tuple)}")
print(f"字符串转字符串有:{str(my_str)}")
print(f"集合 转字符串有:{str(my_set)}")
print(f"字典 转字符串有:{str(my_dict)}")
# 类型转换:容器转集合
print(f"列表 转集合有:{set(my_list)}")
print(f"元组 转集合有:{set(my_tuple)}")
print(f"字符串转集合有:{set(my_str)}")
print(f"集合 转集合有:{set(my_set)}")
print(f"字典 转集合有:{set(my_dict)}")

# 转字典,由于其余数据容器并无键值对,所以无法转字典


# sorted 排序   将内容排序放入列表之中
print(f"列表 对象排序结果有:{sorted(my_list)}")
print(f"元组 对象排序结果有:{sorted(my_tuple)}")
print(f"字符串对象排序结果有:{sorted(my_str)}")
print(f"集合 对象排序结果有:{sorted(my_set)}")
print(f"字典 对象排序结果有:{sorted(my_dict)}")

# 反向排序
print(f"列表 对象排序结果有:{sorted(my_list, reverse=True)}")
print(f"元组 对象排序结果有:{sorted(my_tuple, reverse=True)}")
print(f"字符串对象排序结果有:{sorted(my_str, reverse=True)}")
print(f"集合 对象排序结果有:{sorted(my_set, reverse=True)}")
print(f"字典 对象排序结果有:{sorted(my_dict, reverse=True)}")