1、Tuple
元组和列表的功能相似,两者的区别在于列表的元素可以修改,元组的元素不能修改。元组使用成对的圆括号 “( ) ” 定义,如下:
tuple1 = (‘a’, ‘b’, ‘c’, ‘d’)
tuple2 = (1, 2, 3, 4, 4)
当元组中只有一个元素时,需要在元素后面加上逗号 “,” ,否则定义元组的圆括号会被当作运算符:
tup1 = (1)
print(type(tup1)) # <class 'int'> 不加 逗号 ,类型为整数
tup2 = (1,)
print(type(tup2)) # <class 'tuple'> 加 逗号,类型为元组
与列表相同,可以使用下标访问元组中的元素。可以将多个元组连接组合成一个新的元组。如下:
tup3 = ('aa', 'bb', 'cc', 11, 22)
print(tup3[3]) # 11 访问下标为3的元素
tup4 = ('python', 'scala', 'java')
print(tup3 + tup4) # ('aa', 'bb', 'cc', 11, 22, 'python', 'scala', 'java') --多个元组组合成一个新的元组
使用 del 语句,删除元组,如下:
tup5 = tup3 + tup4
print(tup5) # ('aa', 'bb', 'cc', 11, 22, 'python', 'scala', 'java')
del tup5 # 删除元组,运行后报错信息显示该元组没有定义
print(tup5) # NameError: name 'tup5' is not defined
+、*、in等运算符对元组同样起作用,效果与列表相似;len()、max()、min()等函数对元组的作用也与列表类似,参考:Python语言基础之数据类型-Tuple、Set、Dictionary(3-3)。
2、Set
集合是包含若干元素的列表,其特点是元素无序且不重复。定义集合使用成对的花括号 “ { } ” 或 set() 函数,如下:
set1 = {‘python’, ‘java’, ‘scala’}
创建空集合的话,必须使用 set() 函数。
Python中,两个不同的集合可以执行交、并、补、差等运算,如下
set1 = {'python', 'java', 'scala'}
set2 = {'java', 'hive', 'hbase'}
result1 = set1 | set2 # 两个集合的并集,合并两个集合的所有元素并去重
result2 = set1 & set2 # 两个集合的交集,两个集合中都有的元素
result3 = set1 ^ set2 # 两个集合的交集的补集,合并两个集合,并去除两个集合都有的元素
result4 = set1 - set2 # 两个集合的差集,去除集合1中 集合2有的元素
print(result1) # {'hive', 'java', 'scala', 'hbase', 'python'}
print(result2) # {'java'}
print(result3) # {'hive', 'scala', 'python', 'hbase'}
print(result4) # {'python', 'scala'}
Python中可以用于集合的函数主要有如下所示:
set3 = {'aa', 'bb', 'cc'}
set3.add('dd') # 添加一个元素
print(set3) # {'bb', 'aa', 'dd', 'cc'}
set4 = set3.copy() # 复制一个集合
print(set4) # {'bb', 'aa', 'dd', 'cc'}
set4.discard('cc') # 删除一个指定元素
print(set4) # {'dd', 'bb', 'aa'}
set4.pop() # 随机移除一个元素
print(set4) # {'aa', 'dd'}
set4.clear() # 清空一个集合
print(set4) # set()
remove() 和 discard() 函数作用相同,但remove() 函数在移除集合中一个不存在的元素时会发生错误,而discard() 函数不会。
set3 = {'bb', 'aa', 'dd', 'cc'}
set3.remove('ff') # 移除集合中不存在的元素时会报错
print(set3) # 报错:KeyError: 'ff'
set3.discard('ff') # 移除集合中不存在的元素时也不会报错
print(set3) # {'cc', 'dd', 'bb', 'aa'}
3、Dictionary
Dictionary(字典)可以存储任意类型的对象,字典中的 键值对 分别存储字符串型的 “下标” 及对应的内容。字典中的每个键和值之间使用 冒号 “ : ” 分隔,键值对 之间使用逗号 “ , " 分隔,整个字典使用成对的花括号 " { } " 定义。如下:
dict1 = {'a':'1', 'b':'2', 'c':'3'} # 定义字典
# 访问字典中的值,需要使用方括号 “ [] ” 语法
print(dict1['b']) # 2
# 添加或修改字典中某个 键值对 中的值,也要使用方括号 [] 语法,
# 当该键存在时修改对应的值 ,当该键不存在时将 键值对 添加到字典中。
dict1['c'] = '33' # 修改值
print(dict1) # {'a': '1', 'b': '2', 'c': '33'}
dict1['dd'] = '4' # 添加值
print(dict1) # {'a': '1', 'b': '2', 'c': '33', 'dd': '4'}
与列表、元组、集合相同,清空字典的内容使用 clear() 函数,删除字典使用 del 命令,如下:
dict1 = {'a': '1', 'b': '2', 'c': '33', 'dd': '4'}
del dict1['a'] # 删除字典中 指定键及对应的值
print(dict1) # {'b': '2', 'c': '33', 'dd': '4'}
dict1.clear() # 清空字典
print(dict1) # {}
del dict1 # 删除字典,被删除后再使用会显示说明该字典没有被定义
print(dict1) # NameError: name 'dict1' is not defined
字典有以下两个特点:
1)、其中的键名不能重复,创建字典时若同一个键被多次赋值,则其值为最后一次赋值的内容;
2)、键一旦定义并便不可更改,若要修改键名则意味着将原有键值对删除,并增加新的键值对。