特点:是不可变的列表。
拥有列表的索引、切片等功能,但元素不能被替换修改。
当元组中只有一个元素时,它就是字符串
这是因为此处的小括号默认表示优先级,就像print((2+3)*5)
中的计算中,要先计算小括号内的加法,再计算乘法。所以小括号就默认了该元素的字符串类型优先级更高。
如果想要表示该元素类型是元组,只需要加一个逗号即可
此外,元组不可变,指为其元素分配的内存地址不可变,举例说明。
元组中的一个元素是列表,给列表添加一个元素,是可行的。
t = (10, "张三", ["k12", "cat"])
t[2].append("abc")
print(t)
给该列表分配的内存地址是固定不改变的,列表内部的增删改查是可以操作的。
一般不会这么玩,了解即可。
通过上图示例不难发现,如果大括号内为空,这不是集合,而是字典的数据类型。
并且打印不同类型的元素时,集合也是无序排列的。
在python的set集合中存储数据时,会对数据进行哈希计算,根据计算出来的哈希值进行存储数据,否则会报错,如下图所示。
可哈希:不可变的数据类型:int(整数)、str(字符串)、tuple(元组)、bool(布尔)
不可哈希:可变的数据类型:list(列表)、dict(字典)、set(集合)
set集合中相同的元素不会出现两次及以上,所以可以用来给列表去重。
去除重复之后的数据是无序的。
由图可以看出,去重后打印的列表数据顺序有所变化。
s = set()
t = tuple()
l = list()
s = str()
s.add("懒羊羊")
s.add("xyz")
s.remove("xyz")
修改元素=先删除元素+再添加元素
s.remove("懒羊羊") # 先删除
s.add("灰太狼") # 再新增
通过for
循环来查找元素,因为它是无序的,所以不能走索引
首先创建两个集合,模拟测试环境
s1 = {"孙悟空", "猪八戒", "唐僧"}
s2 = {"比鲁斯", "克林", "孙悟空"}
表示交集:
print(s1 & s2)
表示并集:
print(s1 | s2)
或者
print(s1.union(s2))
表示差集:
print(s1 - s2)
print(s1.difference(s2))
print(s2 - s1)
print(s2.difference(s1))