元组的定义与创建
元组式python的内置数据结构之一,是一种不可变序列
可变序列:字典、列表
不可变序列:字符串、元组
区别:改变序列后其内存id不发生变化(可变序列),id发生变化(不可变序列)
元组用小括号()表示。在多任务环境下,同时操作对象(不可变序列),并不会导致对象发生变化。
t=('hello','world','98',98) #使用()定义元组
print(t)
print(type(t))
t=('hello') #当只有一个元素时,t居然被定义为str,应该多加一个,
print(t)
print(type(t))
t1=tuple(('hello','world','98',98))
print(t1)
print(type(t1))
t2=()
t3=tuple() #两种方式创建空元组
print(t2,t3)
('hello', 'world', '98', 98)
<class 'tuple'>
hello
<class 'str'>
('hello', 'world', '98', 98)
<class 'tuple'>
() ()
字典中元素的修改:字典中元素为str、数值型时,元素 不可修改;当元素为列表list、字典dict时,是可以修改列表及字典的值的。
t=('hello',[1,2,3],{'name':'jake'},98)
print(t)
t[1].append(4)
t[2].clear() #t[0],t[4]是不可修改的
print(t)
('hello', [1, 2, 3], {'name': 'jake'}, 98)
('hello', [1, 2, 3, 4], {}, 98)
元组的遍历
- 使用[索引]——适合在知道索引范围的情况下使用
- for in 语句 ———适合在不知道索因范围的情况下使用
print(t[3]) #使用()获取
for i in t: #使用for语句获取
print(i)
集合:集合是一种可变型序列,集合就是没有value的字典
集合的创建方式:
- 花括号{}
- 内置函数set()
s = {1,1,2,3,4}
print(s) #会把重复的去掉
s1 = set(range(5))
print(s1)
s2 = set([1,1,2,2,3,3]) #列表转集合,去掉重复数
print(s2)
s3 = set((1,3,5,7,9,9)) #元组转集合,去掉重复数
print(s3)
s4 = set('pythoon') #字符串转集合,使出是无序的
print(s4)
s5 = set({1,1,2,3,3}) #本身就是集合
print(s5)
s6 = set() #定义空集合
print(s6)
s7 = {}
print(type(s7)) #直接用空花括号定义则为空字典
{1, 2, 3, 4}
{0, 1, 2, 3, 4}
{1, 2, 3}
{1, 3, 5, 7, 9}
{'n', 'y', 't', 'o', 'h', 'p'}
{1, 2, 3}
set()
<class 'dict'>
集合的判断、增、删、改操作
set.add(x) 集合中增加一个元素x
set.update({x}) 集合中增加另一集合/列表/元组 x的全部元素
set.pop() 删除集合中任意一个元素
set.clear() 清空集合
s = {10,20,30,40}
print(10 in s)
print(10 not in s) #集合的判断操作
s.add(5)
print(s)
s.update({7,8,9})
print(s)
s.update([10,11,12])
print(s)
s.update((13,14,15))
print(s)
s.remove(40)
print(s) #当指定元素不存在时,报异常
s.discard(3)
print(s) #当指定元素不存在时,不报异常
s.pop()
print(s)
s.pop()
print(s) #pop将集合中任意一个删除
s.clear() #清空集合变为空集合
print(s)
True
False
{5, 40, 10, 20, 30}
{5, 7, 40, 8, 10, 9, 20, 30}
{5, 7, 40, 8, 10, 9, 11, 12, 20, 30}
{5, 7, 40, 8, 10, 9, 11, 12, 13, 14, 15, 20, 30}
{5, 7, 8, 10, 9, 11, 12, 13, 14, 15, 20, 30}
{5, 7, 8, 10, 9, 11, 12, 13, 14, 15, 20, 30}
{7, 8, 10, 9, 11, 12, 13, 14, 15, 20, 30}
{8, 10, 9, 11, 12, 13, 14, 15, 20, 30}
set()
set1 & ste2 set1 | set2 set1-set2 set1^set2集合的交集,并集,差集
set1.issuperset(set2) set1.issubset(set2) 判断是超集子集的方法
s3.isdisjoint(s2) 判断是不是不相交(有交集返回false)
s3.intersection(s2) 两集合的交集
s3.intersection(s2) 两集合的并集
s3.difference(s2) 两集合的差集
s3.symmetric_difference(s2) 两集合的对称差集
s1 = {10,20,30,40}
s2 = {10,20,30}
s3 = {5,10,15,20}
print(s1.issuperset(s2)) #s1是s2的超集吗
print(s2.issubset(s1)) #s2是s1的超集吗
s4 = s1 - s2
s5 = s2|s3
print(s4)
print(s5)
print(s3.isdisjoint(s2)) #判断是不是不相交
print(s3.intersection(s2)) #两集合的交集
print(s3.union(s2)) #两集合的并集
print(s3.difference(s2)) #两集合的差集
print(s3.symmetric_difference(s2)) #两集合的对称差集
print(s2^s3) #两集合的对称差集
集合生成式
s1= {i*i for i in range(1,10)}
print(s1)
{64, 1, 4, 36, 9, 16, 49, 81, 25}
列表、元组、字典、集合总结