随着小伙伴们对 Python 的学习不断深入,接触到存数据的 容器
会越来越多。可能有时候,很多 容器
都能满足需求,然而每个 容器
都有其最适合的场景,那么在不同的场景需求面前,如何才能找到最合适的 容器
呢?本篇我们总结一下 Python 中内置的几种 容器
的特点和适合场景,希望可以帮助到小伙伴们进一步加深理解,做到活学活用!
元组(Tuple)
元组是一种 有序
数据容器,元组一旦初始化之后就不可以再改变。也就意味着当我们要使用 Tuple
时,就必须要确定下所有的元素,并在初始化的时候,就将所有的元素写入 Tuple
。定义元组使用一对圆括号 ( )
,如下,我们演示如何定义一个 Tuple
:
def tuple_demo():
tuple1 = (1) # class 'int'
print(type(tuple1))
tuple2 = (1,) # class 'tuple'
print(type(tuple2))
tuple3 = (1, 2, 3)
print(tuple3)
tuple4 = ("xiaoqiang", "wangcai", 1, 2)
print(tuple4)
# 遍历 tuple 方式1:
for index in range(len(tuple4)):
# 取tuple4中的每个角标
print("index=", index, "data in list=", tuple4[index])
# 遍历 tuple 方式2:
for element in tuple4:
print(element)
def main():
tuple_demo()
if __name__ == '__main__':
main()
上面的例子,小伙伴们会发现 Tuple
的一个坑,“当 Tuple
只有一个元素的时候,需要在该元素之后加 ,
,如果不加 ,
,Python 不会将其当做 Tuple
类型处理”;另外,Tuple
中元素不必要求类型一致。
列表(List)
列表也是一种有序的数据容器,区别于 Tuple
,List
可以随意的添加和删除其中的数据,较为灵活。定义列表使用一对方括号 [ ]
,如下,我们演示一下 List
的定义和使用:
def list_demo():
list1 = [1, 3, 4, 55, 6, 7, 8, 6, 41, 32]
# 在该列表后追加0
list1.append(0) # [1,3,4,55,6,7,8,6,41,32,0]
# 在角标为1的位置添加元素2
list1.insert(1, 2) # [1,2,3,4,55,6,7,8,6,41,32,0]
# 删除元素1,如果有多个1,则只删除第一次出现的1
list1.remove(1) # [2,3,4,55,6,7,8,6,41,32,0]
# 第一次出现元素2的角标
print(list1.index(2)) # 0
# 统计一下列表中1出现的次数
print(list1.count(1)) # 0
# 打印角标从0到3的值
print(list1[:4]) # [2, 3, 4, 55] 也可以使用print(list_a[0:4]) 0:4,是0,1,2,3 不包括4
# 对list中的元素排序,从小到大
list1.sort()
# 对list中的元素排序,从大到小
list1.sort(reverse=True)
# 遍历列表:
for index in range(len(list1)):
# 取a_list中的每个角标
print("index=", index, "data in list=", list1[index])
# 多维列表
mul_list1 = [[1, 2, 3],
[2, 3, 4],
[3, 4, 5]]
print(mul_list1[0][0]) # 输出1
def main():
# tuple_demo()
list_demo()
if __name__ == '__main__':
main()
到这里,可能有的小伙伴会问,“貌似 Tuple
能做的事情,List
也都能做啊,那么 Tuple
有什么存在的必要吗?”,这里要解释一下,由于 Tuple
不可变,所以代码会更安全,如果小伙伴们遇到了可以用 Tuple
代替 List
的场景,那么尽量用 Tuple
代替 List
,可以用函数 tuple1 = tuple(list1)
将 List
转成 Tuple
。
字典(Dictionary)
字典定义了 键
与 值
之间一对一的关系,字典是无序的,在字典中可以通过 键
来访问该键对应的 值
,定义字典是用一对大括号 { }
,如下,我们演示一下 Dictionary
的定义和使用:
def dict_demo():
dic = {"apple": 1, "banana": 2, "peer": 3}
# 可以输出指定的 key 的 value
print(dic["apple"]) # 1
# 删除apple这个key
del dic["apple"]
print(dic) # {"banana":2,"peer":3}
# 添加一个key
dic["orange"] = 20
print(dic) # {"orange":20,"banana":2,"peer":3} 没有顺序
# 字典里面定义字典
dic_dic = {"apple": [1, 2, 3], "pear": {1: "x1", 2: "x2"}, "orange": 2}
# 打印出 x1
print(dic_dic["pear"][1])
def main():
# tuple_demo()
# list_demo()
dict_demo()
if __name__ == '__main__':
main()
集合(Set)
集合是一个无序不重复元素集,定义一个集合使用一对大括号 { }
,我们演示一下 Set
的定义和使用:
def set_demo():
char_list = ['a', 'b', 'c', 'd', 'd', 'c']
a_dict = {1: "he"}
set(char_list) # 将 list 转成集合,set中不允许有重复的元素,相当于去重。顺序会被打乱
print(type(a_dict))
print(type(char_list))
print(type(set(char_list)))
sentence = "Hello Zhou er zhu and hi Zhou da zhu"
print(set(sentence)) # 会将整个句子按照字母,空格去重
# {'o', 'h', 'Z', 'd', 'l', 'r', 'H', 'u', 'n', 'i', 'e', 'z', 'a', ' '}
# 向一个set集合里添加一个元素
unique_char = set(char_list)
unique_char.add('x')
print(unique_char)
unique_char.clear() # 清空一个set
unique_char.remove('x') # set 中不存在x会报错,可以通过下面的方式来避免这个错误
unique_char.discard('x') # set 中不存在x时,不会报错
# 取两个set的交集:
set1 = {'a', 'b', 'c', 'd'}
set2 = {'c', 'd', 'e', 'f'}
print(set1.intersection(set2))
# 在set1中但是不在set2中的元素(set1中有,set2中没有):
print(set1.difference(set2))
def main():
# tuple_demo()
# list_demo()
# dict_demo()
set_demo()
if __name__ == '__main__':
main()
到这里本篇就要结束了,我们详细介绍了 Python 的四种常见的容器和使用方法,小伙伴们如想做到在恰当的场景下选用恰当的容器,还需要勤加练习,以掌握每种容器的最佳适用场景。想了解更多 Python 知识的小伙伴们可以关注我的简书!
网友评论