元组(tuple)
有序且不可变的容器
v1 = (11,22,33) v2 = ("李杰","lotus") v3 = (True,123,"dxl",[11,22,33,44]) # 建议:议在元组的最后多加一个逗v3 = ("李杰","lotus",)
d1 = (1) # 1 d2 = (1,) # (1,) d3 = (1,2) d4 = (1,2)
注意:建议在元组的最后多加一个逗号,用于标识他是一个元组。
# 面试题 1. 比较值 v1 = (1) 和 v2 = 1 和 v3 = (1,) 有什么区别? 2. 比较值 v1 = ( (1),(2),(3) ) 和 v2 = ( (1,) , (2,) , (3,),) 有什么区别? (1,2,3)
1.元组公共功能
-
相加
两个列表相加获取生成一个新的列表。
data = ("赵四","刘能") + ("宋晓峰","范德彪") print(data) # ("赵四","刘能","宋晓峰","范德彪") v1 = ("赵四","刘能") v2 = ("宋晓峰","范德彪") v3 = v1 + v2 print(v3) # ("赵四","刘能","宋晓峰","范德彪")
-
相乘
列表*整型 将列表中的元素再创建N份并生成一个新的列表。
data = ("赵四","刘能") * 2 print(data) # ("赵四","刘能","赵四","刘能") v1 = ("赵四","刘能") v2 = v1 * 2 print(v1) # ("赵四","刘能") print(v2) # ("赵四","刘能","赵四","刘能")
-
获取长度
user_list = ("范德彪","刘华强",'尼古拉斯赵四',) print( len(user_list) )
-
索引
user_list = ("范德彪","刘华强",'尼古拉斯赵四',) print( user_list[0] ) print( user_list[2] ) print( user_list[3] )
-
切片
user_list = ("范德彪","刘华强",'尼古拉斯赵四',) print( user_list[0:2] ) print( user_list[1:] ) print( user_list[:-1] )
-
步长
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)
-
for循环
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能") for item in user_list: print(item)
user_list = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能") for item in user_list: if item == '刘华强': continue print(name)
目前:只有 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)
8.转换
其他类型转换为元组,使用tuple(其他类型)
,目前只有字符串和列表可以转换为元组。
data = tuple(其他) # str / list
name = "Lotus" data = tuple(name) print(data) # 输出 ("武","沛","齐")
name = ["Lotus",18,"pythonav"] data = tuple(name) print(data) # 输出 ("Lotus",18,"pythonav")
9.嵌套
由于元组和列表都可以充当容器
,他们内部可以放很多元素,并且也支持元素内的各种嵌套。
tu = ( '今天姐姐不在家', '姐夫和小姨子在客厅聊天', ('姐夫问小姨子税后多少钱','小姨子低声说道说和姐夫还提钱') ) tu1 = tu[0] tu2 = tu[1] tu3 = tu[2][0] tu4 = tu[2][1] tu5 = tu[2][1][3] print(tu1) # 今天姐姐不在家 print(tu2) # 姐夫和小姨子在客厅聊天 print(tu3) # 姐夫问小姨子税后多少钱 print(tu4) # 小姨子低声说道说和姐夫还提钱
练习题
-
以下哪些数据类型转换为布尔值为False
1 # True "" # False -19 # True [] # False [11,22] # True (1) # True (1,2,3) # True () # False
-
运算符操作
v1 = [] or "lotus" # "lotus" v2 = [11,22] and (1,2,) # (1,2,)
-
比较:
a = [1,2,3]
和b = [(1),(2),(3) ]
以及c = [(1,),(2,),(3,) ]
的区别?a=b=[1,2,3]
c是列表中有个元组
-
将字符串
text = "lotus|dxl|eric"
根据|
分割为列表,然后列表转换为元组类型。text = "lotus|dxl|eric" text = text.split("|") text_list = list(text) print(tuple(text_list))
-
根据如下规则创建一副扑克牌(排除大小王)。
# 花色列表 color_list = ["红桃","黑桃","方片","梅花"] # 牌值 num_list = [] for num in range(1,14): num_list.append(num) result = [] # 请根据以上的花色和牌值创建一副扑克牌(排除大小王) # 最终result的结果格式为: [ ("红桃",1), ("红桃",2) ... ]
color_list = ["红桃", "黑桃", "方片", "梅花"] num_list = [] for num in range(1, 14): num_list.append(num) result = [] for color in color_list: for num in num_list: result.append((color, num)) print(result)