【Python】四种基础数据结构主要特点
本文内容参考:https://www.cnblogs.com/pychina/p/10219772.html索引都是用中括号[]!!!!!!一、列表list列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除;列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素;列表中的元素可以是Python中的任何对象,这意味着元素可以是字符串、整数、元组、也可以是list等Pyt...
本文内容参考:https://www.cnblogs.com/pychina/p/10219772.html
索引都是用中括号[]!!!!!!
一、列表list
- 列表中的每个元素都可变的,意味着可以对每个元素进行修改和删除;
- 列表是有序的,每个元素的位置是确定的,可以用索引去访问每个元素;
- 列表中的元素可以是Python中的任何对象,这意味着元素可以是字符串、整数、元组、也可以是list等Python中的对象。
初始化为中括号[]
常见操作
# 初始化
mylist = ['Google', 'Yahoo', 'Baidu']
# 在列表后面追加
mylist.append('Alibaba')
# 在指定位置插入元素
mylist.insert(1, 'Tencent')
# ['Google', 'Tencent', 'Microsoft', 'Baidu', 'Alibaba']
# 弹出尾部元素
mylist.pop()
# 这是弹出最后一位,可以与append()配合用于栈
# 弹出指定位置元素
mylist.pop(0)
# 这是弹出第一位,可以与append()配合用于队列
# 批量删除
del mylist[1:3]
# 此处为删除位置为1和位置为2的内容,不包含位置3。与索引时相同,不包含末尾。
# 指定内容删除
mylist.remove('Microsoft')
# 索引前n个
mylist[:5] # 索引前5个,分别为0,1,2,3,4
# 索引前n个
mylist[1:5] # 索引位置分别为1,2,3,4
# 索引后n个
mylist[3:] # 从位置3开始索引,一直到末尾
# 生成有规律的列表
a = [x for x in range(1,10)]
# 得到a=[1, 2, 3, 4, 5, 6, 7, 8, 9]
# 嵌套式
#生成一个列表a
a = [i for i in range(1,4)]
print(a)
#生成一个列表b
b = [i for i in range(100,400) if i % 100 == 0]
print(b)
# 嵌套式
c = [m+n for m in a for n in b]
print(c)
#运行结果:
# [1, 2, 3]
# [100, 200, 300]
# [101, 201, 301, 102, 202, 302, 103, 203, 303]
二、元组tuple
- 元组Tuple,用法与List类似,但Tuple一经初始化,就不能修改,没有List中的append(), insert(), pop()等修改的方法,只能对元素进行查询
初始化为小括号()
三、字典dict
-
字典中的数据必须以键值对的形式出现,即k,v:
key:必须是可哈希的值,比如intmstring,float,tuple,但是,list,set,dict不行
value:任何值。 -
键不可重复,值可重复:
键若重复字典中只会记该键对应的最后一个值。 -
字典中键(key)是不可变的,何为不可变对象,不能进行修改;而值(value)是可以修改的,可以是任何对象:
在dict中是根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。
初始化为大括号{}
可用for k,v in a.items():同时得到key和value,a.keys()为访问key,a.values()为访问value
若直接for i in a:,则输出的是key
一个对象在其生命周期内,如果保持不变,就是hashable(可哈希的)。
hashable ≈ imutable 可哈希 ≈ 不可变
在Python中:
list、set和dictionary 都是可改变的,比如可以通过list.append(),set.remove(),dict[‘key’] = value对其进行修改,所以它们都是不可哈希的;
而tuple和string是不可变的,只可以做复制或者切片等操作,所以它们就是可哈希的。
参考:https://blog.csdn.net/qq_17753903/article/details/85345996
比较大小时,比的是key,返回的也是key
d = {"one":1,"two":2,"three":3,"four":4}
print(max(d))
print(min(d))
四、集合set
- 集合中每个元素都是无序的、不重复的任意对象
- 集合内数据无序,即无法使用索引和分片
- 集合内部数据元素具有唯一性,可以用来排除重复数据
- 可以通过集合去判断数据的从属关系。集合可做集合运算,可添加和删除元素。
初始化:
s = {1,2,3,4,5,6,7}
s = set([1,2,3,4,5,6,7])
集合内容操作,因为是无序的,所以只有单纯的添加和删除(需要指定内容)
s = set([1,2,3])
s.add(6)
s.remove(2)
集合运算
s1 = {1,2,3,4,5,6,7}
s2 = {5,6,7,8,9}
#交集
s_1 = s1.intersection(s2)
print("交集:",s_1)
#差集
s_2 = s1.difference(s2)
print("差集:",s_2)
#并集
s_3 = s1.union(s2)
print("并集:",s_3)
#检查一个集合是否为另一个子集
s_4 = s1.issubset(s2)
print("检查子集结果:",s_4)
#检查一个集合是否为另一个超集
s_5 = s1.issuperset(s2)
print("检查超集结果:",s_5)
冰冻集合除了不能修改之外,其余和集合一样!
冰冻集合初始化:
a = frozenset([1,2,4,2,3])
结果为frozenset({1, 2, 3, 4}),因为不含重复值
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)