Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可
print(tuple())
print(())
# 元组是一个不可变的序列,没有增加,修改和删除的对应方法,不像列表有那么多的方法;
#元组中只包含一个元素时,需要在元素后面添加逗号;
print(type((1)))
print(type((1,)))
print(type(('1')))
print(type(('1',)))
name_tuple = ('张三', '李四', '王五', '啦啦啦', '王五')
print(name_tuple.count('王五'))
print(name_tuple[0])
print(name_tuple[1:4])
for i in name_tuple:
i = i.replace('啦啦啦', '宋小宝')
print(name_tuple)
因为是一个不可变的序列,所以不能修改
# 可以通过元组推导式生成元组 默认生成一个生成器对象,需要使用tuple方法转化成元组
print(x for x in range(1, 11))
print(tuple((x for x in range(1, 11))))
1. 相加,两个元组相加获取生成一个新的元组。
data = ("赵四","刘能") + ("宋晓峰","范德彪")
print(data)
v1 = ("赵四","刘能")
v2 = ("宋晓峰","范德彪")
v3 = v1 + v2
print(v3)
2. 相乘,元组*整型 将元组中的元素再创建N份并生成一个新的元组。
data = ("赵四","刘能") * 2
print(data)
v1 = ("赵四","刘能")
v2 = v1 * 2
print(v1)
print(v2)
3. 获取长度
user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( len(user_list) )
4. 索引
user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0] )
print( user_list[2] )
print( user_list[3] )
5. 切片
user_list = ("范德彪","刘华强",'尼古拉斯赵四',)
print( user_list[0:2] )
print( user_list[1:] )
print( user_list[:-1] )
6. 步长
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
print( user_list[1:4:2] )
print( user_list[0::2] )
print( user_list[1::2] )
print( user_list[4:1:-1] )
# 字符串 & 元组。
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
data = user_list[::-1]
# 列表
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
data = user_list[::-1]
user_list.reverse()
print(user_list)
7. for循环
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for item in user_list:
print(item)
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
目前:只有 str、list、tuple 可以被for循环。 "xxx" [11,22,33] (111,22,33)
# len + range + for + 索引
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for index in range(len(user_list)):
item = user_list[index]
print(item)
# 字符串和列表可以转换为元组
name = 'nebula'
name_list = ['china', 'usa', 'russia']
print(tuple(name))
print(tuple(name_list))
# 元组嵌套其他数据类型 如果嵌套元素为可变类型 比如列表,则其值可以被修改 ;
li = ("lvpengfei", [11,22,(88,99,100,),33], "大胖", ("ritian", "barry",), "wenzhou")
li[1][0] = 12
print(li)
li[1][1] = 23
print(li)
li[1].append(44)
print(li)
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { }或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
set1 = {11, 22, 33, 44, 55, 55, 33}
print(set1)
输出一个集合会自动去重;
list1 = [1, 2, 2, 3, 3, 4, 4]
print(list(set(list1)))
set1 = {11, 22, 33, 44, 55, 55, 33}
set1.add(23)
print(set1)
添加元素或者删除元素都是在任意位置添加或删除;
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
set1 = {11, 22, 33, 44, 55, 55, 33}
set1.pop()
print(set1)
使用pop方法删除元组,是删除任意元素;
set1 = {11, 22, 33, 44, 55, 55, 33}
set1.remove(11)
print(set1)
set1.remove(888)
print(set1)
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
set1 = {11, 22, 33, 44, 55, 55, 33}
set1.discard(888)
print(set1)
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误,输出原集合,什么也不做;
set1 = {11, 22, 33, 44, 55, 55, 33}
print(len(set1))
set1 = {11, 22, 33, 44, 55, 55, 33}
set1.clear()
print(set1)
thisset = {"Google", "Runoob", "Taobao"}
print("Runoob" in thisset)
print("Facebook" in thisset)
方法 |
描述 |
add() |
为集合添加元素 |
clear() |
移除集合中的所有元素 |
copy() |
拷贝一个集合 |
difference() |
返回多个集合的差集 |
difference_update() |
移除集合中的元素,该元素在指定的集合也存在。 |
discard() |
删除集合中指定的元素 |
intersection() |
返回集合的交集 |
intersection_update() |
返回集合的交集。 |
isdisjoint() |
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() |
判断指定集合是否为该方法参数集合的子集。 |
issuperset() |
判断该方法的参数集合是否为指定集合的子集 |
pop() |
随机移除元素 |
remove() |
移除指定元素 |
symmetric_difference() |
返回两个集合中不重复的元素集合。 |
symmetric_difference_update() |
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() |
返回两个集合的并集 |
update() |
给集合添加元素 |
# 使用其他集合更新到自己的集合中,相同元素会去重
set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}
set1.update(set3)
print(set1)
# 子集合的判断
set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}
print(set3.issubset(set1))
# 本集合的内容不在另一个集合中的元素组成一个新集合输出
set1 = {11, 22, 33, 44, 55, 55, 33}
set3 = {111, 222, 333, 55, 44}
print(set3.difference(set1))
# 列表不能被hash 所以不能作为集合的元素
set4 = {[1, 2, 4], 1, 2}
print(set4)
# 集合不能被hash 所以不能作为集合元素
set5 = {{1,3,4},2,4}
print(set5)
set6 = {1, 'aaa', True, (1, 2)}
print(set6) #1和True被认为是一个值;0和False被认为是一个值;