002python基础数据容器学习

Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素每一个元素,可以是任意类型的数据,如字符串、数字、布尔等

数据容器list(列表)

基本语法:

# 字面量
[元素1, 元素2, 元素3, 元素4, ...]
# 定义变量
变量名称 = [元素1, 元素2, 元素3, 元素4, ...]

# 定义空列表
变量名称 = []
变量名称 = list()

注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

my_list1 = ['nihao', 'python', 'xiaohong', 'pycharm']
my_list2 = [my_list1, 'world']
print(my_list2)
print(type(my_list2))
>>>
[['nihao', 'python', 'xiaohong', 'pycharm'], 'world']
<class 'list'>

list的遍历

列表的下标(索引)

# 语法: 列表[下标索引]
name_list = ['Tom', 'Lily', 'Rose']
print(name_list[0])
print(name_list[1])
print(name_list[2])
>>>
Tom
Lily
Rose

索引也可以使用反向索引,从-1开始

# 语法: 列表[下标索引]
name_list = ['Tom', 'Lily', 'Rose']
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])
>>>
Rose
Lily
Tom

注意,操作索引范围会报错
嵌套列表索引

list1 = [[1, 2, 3], [4, 5, 6]]
# 要求取list1中的5
print(list[1][1])
>>>
5

list1 = [[1, 2, 3], [4, 5, 6, [7, 8, 9]]]
# 要求取list1中的8
print(list1[1][3][1])
>>>
8

列表类方法

  1. 列表的查询方法:list.index(元素)

功能:查找指定元素在列表的下标,如果找不到,报错ValueError,返回的下标类型为int
对于嵌套列表的查询只能查询到第一层

  1. 列表元素的修改方法:list[下标] = 修改值

功能:将列表中对应下标的元素的值修改成‘=’右边的值

  1. 列表的元素插入方法:list.insert(下标, 元素)
my_list1 = ['nihao', 'python', 'xiaohong', 'pycharm']
my_list1.insert(1, 'bit')
print(my_list1)
>>>
['nihao', 'bit', 'python', 'xiaohong', 'pycharm']
  1. 列表的元素追加方法:list.append(元素)

功能:在列表尾部进行一个追加

my_list1 = ['nihao', 'python', 'xiaohong', 'pycharm']
my_list1.append('人生苦短,我用python')
print(my_list1) 
>>>
['nihao', 'python', 'xiaohong', 'pycharm', '人生苦短,我用python']

注意,append()方法只能追加一个元素,如果要追加一批元素,可以使用extend()方法
语法如下:list.extend(其他数据容器)

my_list1 = ['nihao', 'python', 'xiaohong', 'pycharm']
my_list2 = [1, 2, 3]
my_list1.extend(my_list2)# 如果使用append的话,此处的my_list2会被当成一个整体追加到my_list1尾部
print(my_list1)
>>>
['nihao', 'python', 'xiaohong', 'pycharm', 1, 2, 3]
  1. 列表元素的删除方法:
    1. del list[下标]
    2. list.pop(下标) 此方法还会返回删除元素的值
    3. list.remove(元素)调用正确返回值为None,否则会报错,从列表0号元素开始查找,找到与之匹配的第1个元素进行删除
my_list1 = ['nihao', 'python', 'xiaohong', 'pycharm']

# del list[]
del list[3] # pycharm
print(my_list1)
# list.pop()
e1 = list.pop(2) # xiaohong
print(e1)
print(my_list1)
# list.remove()
my_list1.remove('nihao')
print(my_list1)
>>>
['nihao', 'python', 'xiaohong']
xiaohong
['nihao', 'python']
['python']
  1. 列表清空方法:list.clear()
  2. 列表某个元素统计方法:list.count(元素)

功能:统计某一个元素在列表中的数量

  1. 列表长度获取方法(也表示列表中有多少个元素):len(列表名)

总结

index使用方法作用
1list.addend(元素)向列表中追加一个元素
2list.extend(容器)将容器中的元素取出,追加到list末尾
3list.insert(下标, 元素)指定下标,插入指定元素
4del list[下标]删除list指定下标元素
5list.pop(下标)删除list指定下标元素,并且返回该元素
6list.remove(元素)删除list中指定的元素
7list.clear()清空整个list
8list.count(元素)统计该元素在list中的个数
9list.index(元素)查找指定元素在列表中的下标
10len(容器)统计容器内有多少个元素

遍历方法

  1. while循环
  2. for循环
  3. 演示代码
# while循环的方式遍历
def list_while_func():
    mylist = ['cles', 'bit', 'love', 'code']
    index = 0
    print("while循环的方式遍历")
    while index < len(mylist):
        elem = mylist[index]
        print(f"列表的元素:{elem}")
        index += 1

# for循环的方式遍历
def list_for_func():
    mylist = ['cles', 'bit', 'love', 'code']
    print("for循环的方式遍历")
    for elem in mylist:
        print(f"列表中的元素:{elem}")

list_while_func()
list_for_func()
>>>
while循环的方式遍历
列表的元素:cles
列表的元素:bit
列表的元素:love
列表的元素:code
for循环的方式遍历
列表中的元素:cles
列表中的元素:bit
列表中的元素:love
列表中的元素:code

tuple元组

特点

不可修改
与列表比较,列表是可以修改的,元组是不可以修改的,所以可以将元组理解为:定义完成后,不可修改的列表
元组的定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。

# 定义元组字面量
(元素, 元素, 元素, 元素, ...)
# 定义元组变量
变量名称 = (元素, 元素, 元素, 元素, ...)
# 定义空元组
变量名称 = () # 方式1
变量名称 = tuple() # 方式2
# 定义单个元组的元组
t1 = ("hello", ) # 逗号是不可以省略的,省略之后变成了str类型
# 元组可以嵌套定义
# 元组的基本操作.index()		.count()	len()

元组的遍历

# 元组的遍历
mytuple = (9, 8, 7, 6, 5, 4)

def tuple_while():
    print("while循环遍历")
    index = 0
    while index < len(mytuple):
        print(f"元组内的元素有:{mytuple[index]}")
        index += 1

def tuple_for():
    print("for循环遍历")
    for elem in mytuple:
        print(f"元组内的元素有:{elem}")


tuple_while()
tuple_for()

特例

当元组中嵌套列表的时候,可以对元组中的列表进行修改

mytuple1 = (1, 2, 3, [4, 5, 6])
print(f"未修改的元组为:{mytuple1}")

mytuple1[3].append("hello tuple")
print(f"修改后的元组为:{mytuple1}")
>>>
未修改的元组为:(1, 2, 3, [4, 5, 6])
修改后的元组为:(1, 2, 3, [4, 5, 6, 'hello tuple'])

str(字符串)

特点

和元组一样,字符串是一个无法修改的数据容器

常用方法

index方法

# index方法
mystr = 'cles and bit'
print(f"在字符串{mystr}中查找and,起始下标为{mystr.index('and')}")
>>>
在字符串 cles and bit中查找and,起始下标为6

replace方法

# replace方法
'''
string.replace(str1,str2)
功能:将string中的str1替换成str2
返回值是一个新的字符串
'''
mystr = 'cles and bit'
temp_str = mystr.replace('and', '和')
print(temp_str)
>>>
cles 和 bit

split方法

# split方法
'''
string.split(str)
功能:将str作为分隔符,将string中的内容分割,并且保存到一个list中
返回值是一个list容器
'''
mystr = 'clesbit love coding and skateboard'
temp = mystr.split(' ')
print(f"字符串{mystr},被分割之后变成了{temp},类型是{type(temp)}")
>>>
字符串clesbit love coding and skateboard,被分割之后变成了['clesbit', 'love', 'coding', 'and', 'skateboard'],类型是<class 'list'>

strip方法

# strip方法
'''
string.strip() 参数可选
当不传参数的时候,此方法会去除掉字符串前后的空格
当传入参数的时候,此方法会将参数的内容划分为字串,进行字符串的规整操作
返回值是一个字符串
'''
newstr = '  **#clesbit love coding and skateboard*#*   '
print(f"原字符串是:{newstr}")
temp1 = newstr.strip()
print(f"不传参数的时候:{temp1}")
temp2 = newstr.strip(' *# ')
print(f"传入参数' *# '的时候:{temp2}")
>>>
原字符串是:  **#clesbit love coding and skateboard*#*   
不传参数的时候:**#clesbit love coding and skateboard*#*
传入参数' *# '的时候:clesbit love coding and skateboard

count方法统计字符串中某个字符串出现的次数
len方法也就是字符串长度了

数据容器的切片

序列是指:内容连续、有序,可使用下标索引的一类数据容器列表、元组、字符串,均可以可以视为序列。
偷懒一下嘿嘿
image.png
说明:切片后的序列类型和原序列一样

set集合

定义语法

# 定义集合字面量
{元素, 元素, 元素, 元素, ...}
# 定义集合变量
变量名称 = {元素, 元素, 元素, 元素, ...}
# 定义空集合
变量名称 = set()

集合的特点

不能重复,内容是无序的,所以不支持下标索引访问

集合的常用方法

# 集合的常用方法
# 添加新元素
# 集合.add(元素)
my_set = {'hello', 'world'}
my_set.add('clesbit')

# 移除元素
# 集合.remove(元素),将指定元素从集合中移除
my_set = {'hello', 'python', 'pycharm', 'clesbit'}
my_set.remove('python')
# >>> {'pycharm', 'clesbit', 'hello'}

# 取元素
# 集合.pop(),功能是从集合中随机取出一个元素,同时集合本身会被修改,取出的元素会在集合中移除
my_set = {'hello', 'python', 'pycharm', 'clesbit'}
print(f"集合中取出的元素是:{my_set.pop()},集合中还剩下{my_set}")


# 清空集合
# 集合.clear(),功能是清空整个集合
my_set = {'hello', 'python', 'pycharm', 'clesbit'}
print(f"集合清空之后:{my_set.clear()}")

# 取两个集合的差集
# 集合1.difference(集合2)
# 结果:得到一个新的集合,包含集合1内有但是集合2没有的元素
myset1 = {1, 3, 5, 7, 9}
myset2 = {1, 2, 4, 7, 8}
diffset = myset1.difference(myset2)
print(diffset)
# >>> {9, 3, 5}

# 消除差集
# 集合1.difference_update(集合2)
# 结果在集合1内删除和集合2相同的元素,修改的是集合1
myset1 = {1, 3, 5, 7, 9}
myset2 = {1, 2, 4, 7, 8}
myset1.difference_update(myset2)
print(myset1)
# >>> {3, 5, 9}

# 集合合并
# 集合1.union(集合2)
# 结果将集合1与集合2进行一个合并,得到一个新的集合
myset1 = {1, 3, 5, 7, 9}
myset2 = {1, 2, 4, 7, 8}
unionset = myset1.union(myset2)
print(unionset)
# >>> {1, 2, 3, 4, 5, 7, 8, 9}

# 集合元素统计
# len(集合)
myset1 = {1, 1, 2, 3, 5, 4}
print(len(myset1))
# >>> 5

# 集合遍历
# 只能通过for循环
my_set = {'hello', 'python', 'pycharm', 'clesbit'}
for elem in my_set:
    print(f"集合中的元素是:{elem}")

dict字典、映射

字典的定义

# 定义字典字面量
{key: value, key: value, key: value, key: value, ...}
# 定义字典变量
my_dict = {key: value, key: value, key: value, key: value, ...}
# 定义空字典
my_dict = {}
my_dict = dict()

字典的特点

字典和集合一样,是没有索引的,只能通过key值去访问对应的value
字典的key值可以重复,重复后的key值对应的value会把旧的key对应的value进行一个覆盖

my_dict = {"bit": 20, "bit": 18, "cles": 456}
print(my_dict)
>>>
{'bit': 18, 'cles': 456}

注意:字典可以嵌套,但是key不能为字典

student_dict ={
    "小明": {
        "语文": 77,
        "数学": 66,
        "英语": 33,
        },
        "小红": {
            "语文": 88,
            "数学": 86,
            "英语": 55,
        },
        "小军": {
            "语文": 99,
            "数学": 96,
            "英语": 66,
        },
}
print(f"小明的数学成绩:{student_dict['小明']['数学']},分数类型是:{type(student_dict['小明']['数学'])}")
>>>
小明的数学成绩:66,分数类型是:<class 'int'>

字典的常用操作

  1. 新增元素和更新元素
# 语法 字典[key] = value 结果:字典被修改,如果key不存在于字典中,则视为新增

my_dict = {
    "xiaoming": 84,
    "xiaohong": 94,
    "xiaojun": 74,
}
my_dict['xiaoming'] = 99
my_dict['xiaogang'] = 69
print(my_dict)
>>>
{'xiaoming': 99, 'xiaohong': 94, 'xiaojun': 74, 'xiaogang': 69}
  1. 删除元素
# 字典.pop(key) 结果:key对应的元素被删除,并且返回key所对应的value
my_dict = {
    "xiaoming": 84,
    "xiaohong": 94,
    "xiaojun": 74,
}
score = my_dict.pop('xiaojun')
print(f"对应删除后的字典是{my_dict},删除元素对应的value是:{score}")
>>>
对应删除后的字典是{'xiaoming': 84, 'xiaohong': 94},删除元素对应的value是:74
  1. 清空元素
# 清空字典
my_dict = {
    "xiaoming": 84,
    "xiaohong": 94,
    "xiaojun": 74,
}
my_dict.clear()
print(my_dict)
>>>
{}
  1. 获取字典全部的key
# 获取字典全部的key
my_dict = {
    "xiaoming": 84,
    "xiaohong": 94,
    "xiaojun": 74,
}
keys = my_dict.keys()
print(f"获取到的全部的key是{keys},类型是{type(key)}")
>>>
获取到的全部的key是dict_keys(['xiaoming', 'xiaohong', 'xiaojun']),类型是<class 'dict_keys'>
  1. 字典的遍历
# 通过keys方法可以获取到字典的所有的key,通过key进行遍历
my_dict = {
    "xiaoming": 84,
    "xiaohong": 94,
    "xiaojun": 74,
}
keys = my_dict.keys()
print("字典的遍历")
for x in keys:
    print(f"key是:{x},对应的值是{my_dict[x]}")
>>>
key是:xiaoming,对应的值是84
key是:xiaohong,对应的值是94
key是:xiaojun,对应的值是74

# 第二种写法(比较常用)
for x in my_dict:
    print(f"key是:{x},对应的值是{my_dict[x]}")
  1. 字典元素数量统计

使用len方法就好了

数据容器的通用操作

常用

  • len()
  • max()
  • min()

类型转换

  • str(容器) 转字符串
  • list(容器)转列表
  • set(容器)转集合
  • tuple(容器)转元组

通用排序功能

sorted(容器, [reverse = True])
说明:将给定的容器进行排序,参数2可省略,默认为False,当为True的时候,将排序结果进行反转
注意:排序结果是一个list对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cles8it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值