python:(原生)数据结构

python基础:(原生)数据结构

本篇文章主要详细介绍python中的四大容器:list、tuple、dict 和 set的相关知识,希望能够对大家稍微起到一点帮助!

一、列表(list)

1、列表的创建

my_List = [元素1……元素n]
my_List = list()

2、特点

  1. 有序保存任意类型的数据

  2. 并且是可变数据类型

因为是有序的,所以

  • 支持下标索引
  • 切片

3、列表的循环遍历

  • while循环
# 依次拿出列表中的值
i = 0
while i < len(list_Name):
	print(list_name[i])
	i += 1
  • for循环
# 依次拿出列表中的值
for 临时遍历[x] in list_Name:
	print(临时变量[x])
#依次拿出列表中的索引和值
for index,value in enumerate(list_name):
   # 注意:首先遍历出的是索引,然后是值,此方法可用于str、list、tuple这种有序的数据类型
    print(index,value)

4、列表的常用操作

#(1)len
说明:获取列表的长度
格式:len(list_name)
#1、查找元素
#(1)索引查找
#list_name[index]
#(2)count
说明:获取某个元素在列表中的个数
格式:list_name.count(元素)
#(3)index
说明:获取某个元素在列表中首次出现的位置(下标索引),如果没有查找到,则抛出异常
格式:list_name.index(元素)
#(4)in
说明:判断某个元素在列表中
格式:if 元素 in list_name:
#(5)not in
说明:判断某个元素不在列表中
格式:if 元素 not in List_name:
#2、增加元素
#(1)append
说明:追加。将对象添加到列表的最末尾
格式:List_name.append(object)
#(2)extend
说明:追加可迭代对象,并将对象拆分为最小单元,并将这一个个的最小单元依次存入列表的末尾
格式:list_name.extend(object)
#(3)insert
说明:将对象插入到列表的某个位置(下标索引)
格式:list_name(index,object)
#3、删除
#(1)del
说明:用于删除某个索引位置的元素
格式:del list_name[index]
#(2)pop
说明:用于删除某个索引位置的元素
格式:list_name.pop(index)
#(3)remove
说明:用于删除列表中的某个对象
格式:list_name.remove(object)
#(4)clear
说明:清空元素
格式:list_name.clear()
#4、修改元素
list[index] = new_value
#5、排序
#(1)reverse
说明:反转列表=>>倒序排列
格式:list_name.reverse
注意:因为是列表树有序的,所以可以使用切片,那么切片也可以倒序排列
格式:list_name[::-1]
#(2)sort
说明:列表升序排列(小>>大)
格式:list_name.sort()  ==  list_name.sort(reverse=False)
#(3)sort(reverse=True)
说明:列表降序排列(>>)
格式:list_name.sort(reverse=True)

5、列表嵌套

list_name = [ [] , [] , [] , ……]

6、案例

# 请问这个程序中最终输出的结果是什么?
my_list = [1,True, 3.14, 44, 22]
new_list = my_list
for value in new_list:
    my_list.remove(value)
print(new_list)

#分析:
	#1、第二行代码是获取访问地址,那么也就证明new_list可以访问new_list中元素
    #2、接下来看for循环,在这里告诉偷偷告诉大家一个冷门知识:for循环遍历可迭代对象,遍历的规则和while循环一样,遍历的是下标索引,而且是1、2、3、这样走的,而且是有顺序的,不会变
    #3、那么就按这个规则,再读代码,第一次,删除了my_list中的元素1没问题,此时my_list中的所以位置调整了,就是都往前移了,那么他们的下标索引也往前移了,那么new_list也一样调整了,因为它是访问而根本没存储
    #4、第二次遍历的索引是1,那么取出的3.14,删除的就是my_list的3.14,此时列表位置再次往前移
    #5、第三次循环遍历的索引是2,那么就取出22,并删除,此时已经将列表索引循环完了,往后就没了
    #6、此时列表中就剩下了True和44

二、元组(tuple)

1、元组的创建

my_tuple = ()
my_tuple = tuple()

2、特点

  1. 有序存储任意数据类型
  2. 它是不可变数据类型
  3. 那么就代表了它除了不能增、删、改以外可以实现列表的大部分功能,比如说下标索引、切片、循环遍历等

3、为什么python要引入元组?

3、元组的循环遍历

  • while
i = 0
while i < len(tuple_name):
	print(tuple_name(i))
	i += 1
  • for
for 临时变量[x] in tuple_name:
	print(x)

4、元组的常用操作

(1)index
格式:tuplu_name.index(object)
(2)count
格式:tuple_name.count(object)
(3)in
格式:if 元素 in tuple_name:
(4)not……in
格式:if 元素 not in tuple_name:
(5)通过index来获取值
格式:tuple_name[index]
(6)len
格式:len(tuple_name)

5、注意

(1)当列表中只有一个值的时候,必须使用逗号隔开,否则将成为一个其他的数据类型

#格式:tuple_name = (value,)

(2)元组是不可变数据类型,但是可以通过元组嵌套列表来修改列表中的值

#格式:tuple_name = ( 1,2,[ value1,value2,…… ],5,9 )

6、为什么要引入元组,目的为何?

​ 首先,元组是不可变数据类型,那么它就不能增、删、改,也就证明我们不能直接的修改它,那么对于元组中的数据来说是相对安全的,所以引入元组的目的就是为了保护数据的相对安全

三、字典(dict)

1、字典的创建

my_dict = {key:value,key:value,……}
由 key:value 这样的键值对组成
my_dict = dict()

2、作用和特点

  1. 字典可以保存任意数据类型
  2. 字典是无序的,这就证明了它不能使用下标索引和切片
  3. 字典是可变数据类型

3、为什么python要引入字典?

​ 首先我们先看列表和元组,都是有序的,那么就是使用下标索引的方式来获取数据,但是当里面存储了大量数据,并且索引不知道的情况下,只能使用循环遍历并且判断来找到某个值,这样是不是显的特别繁琐,为了解决这种问题,出现了字典,我们可以通过字典的键key来快速、精准、有效的获取想要的值,同时这也证明了字典键key的一个特征:key必须是唯一的,不可变的

4、字典循环遍历

  • for
# 依次获取字典的键
for 临时变量[x] in dict_name:
	print(x)
# 依次获取字典的键值
for value in dict_name.values():
    print(value)
# 获取字典的键值对
for item in dict_name.items():
    # 注意:此时输出的是一个元组,因为items是返回一个包含键值对的元组列表,通过for循环已经遍历到元组
    print(item)
# 虎丘字典的项,也就是依次获取字典的key和value
for key,value in dict_name.items():
    #注意:当字典中存储的都是字符或字符串的时候使用%s
    print("key=%s,value=%s" %(key,value))

5、字典的常用操作

#1、增/修
#(1)通过索引增加或修改
说明:当列表中有key,那么就修改value,如果没有,则新建键值对并添加到字典中
格式:dict_name[key] = new_value
#2、查
#(1)len
格式:len(dict_name)
#(2)通过键查
格式:dict_name[key]
#(4)keys
说明:获取某个字典的所有键,并返回一个包含所有键的列表
格式:my_list = list(dict_name.keys())
#(5)values
说明:获取某个字典的所有键值,并返回一个包含所有键值的列表
格式:my_list = list(dict_name.values())
#(6)items
说明:获取某个字典的所有键值对,并返回一个包含所有键值对元组的列表
格式:my_list = list(dict_name.items())
#(7)in
格式:if object in dict_name:
#(8)not in
格式:if object not in dict_name;
#3、删除
#(1)del
说明:删除单个键值对
格式:del dict_name[key]
#(2)clear 
说明:清空字典
格式:dict_name.clear()

6、get和setdefault函数的区别

#(1)get
#说明:获取字典中某个键的值
#格式:dict_name.get(key,default)
# 字典录入数据
my_dict = {"name": "张三", "age": 18, "sex": "男"}
#情况一:当key存在于字典中,参数2default不写,返回的是字典中key对应的键值
get.my_dict("name")
#情况二:当key存在于字典中,并且参数2default已经给出具体的值,此时返回的依然是字典中key对应的键值
#情况三:当key不存在字典中,并且参数2default不写,那么返回None,不存入字典
#情况四:当key不存在字典中,参数2已经给出具体的值,那么此时返回default值,不存入字典
#(2)setdefault 设置默认值
#说明:获取字典中某个键的值,如果没有将存入字典
#格式:my_dict.setdefault(key,defualt)
# 字典录入数据
my_dict = {"name": "张三", "age": 18, "sex": "男"}
#情况一:当key存在字典中,参数2default不写,那么将返回字典中key对应的键值
#情况二:当key存在字典中,参数2default已经给出具体的值,此时依然返回字典中key对应的键值
#情况三:当key在字典中不存在,参数2default不写,那么将返回None,并且将 key:None 存入字典
#情况三:当key在字典中不存在,参数2default已经给出具体的值,那么此时返回default值,并且存入字典
"""
get函数于setdefault函数的区别?
(1)相同点:
	当key存在字典中,不管写不写参数2default都将返回字典中key对应的键值,然后就不做任何操作
	当key不存在字典中,参数2default不写,都返回None
	当key不存在字典中,参数2default已经给出具体的值,那么返回default的值
(2)不同点:
	get:当key不存在字典中,get只返回None或default值,并且不做任何操作
	setdefault:大哥key不存在字典中,setdefault返回None或default,并且要将key:default存入字典
"""

7、注意

#1、key特点
#(1)key在字典中必须是唯一的,不能重复,如果重复最后一个出现的key将覆盖
#(2)key必须是不可变类型,比如 list 就不可以
#2、value特点
#字典中value可以重复

四、集合(set)

1、特点

  • 可以存储任意数据类型,但是不能存储可变数据类型,比如list、dict
  • 集合是无序数据类型
  • 集合是可变的数据类型
  • 集合总的元素是唯一的,不能重复
  • 集合是可迭代对象,所以可以使用for循环遍历毋庸置疑,并且计算长度len函数也毋庸置疑

2、为什么pytthon要引入集合?有什么作用?

​ 首先要知道集合的一个特性,集合中的元素是唯一的,那么就证明它可以去除重复,这是可以肯定的,其次,集合还可以用于求交集和并集

3、集合定义

# 空集合
set_name = set() 
# 带有元素的集合
set_name = {元素1、元素2、……}

4、集合的相关操作

(1)添加元素
1、add函数
格式:set_name.add(object)
2、update函数
格式:set_name.update(lterable“可迭代对象”)
(2)删除元素
1、pop函数
说明:随机删除一个元素
格式:set_name.pop()
2、remove
说明:删除一个指定元素,有则删除,无则报错
格式:set_name.remove(object)
3、discard
说明:删除一个指定元素,有则删除,无则不做任何事情
格式:set_name.discard(object)
(3)去重
# 一个带有与元素的列表
my_list = [1,2,2,3,1,2,4,5]
# 需求:去除重复帮返回一个不带重复值的列表
new_list = list(set(my_list))
print(new_list)
# 分析:
	#1、由于集合中的元素是唯一的,如果出现重复值,则保留一个
    #2、那么我们就可以先将my_list转换为集合去除重复
    #3、由于需求说是要返回的是列表,所以再将集合转换为列表即可
    #4、最后存入变量new_list中,并输入

(4)交集
#交集符号:&,交集就是公共的部分
#说明:集合可以获取两个集合的交集
#格式:set1 & ste2
(5)并集
#并集符号:|  并集就是两个集合中不同的部分+1个相同的部分
#说明:集合可以获取两个集合的并集
#格式:set1 | set2

以上均为自己在今天的学习中所收获的,希望csdn官方以及各位朋友见证我的成长,如果本篇文章有什么做的不够完善的地方,还请各位朋友能够多多指教,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

御弟謌謌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值