注:该笔记非原创,只是上网课记的

内容概要

目标:掌握列表和元组数据类型的各种操作(知识点应用案例)

·list,列表类型,用于存储一些数据的容器(有序&可修改)。{80%}

·tuple,元组类型,用于存储一些数据的容器(有序&不可修改)

字符串、列表、元组都是序列类型

列表

列表(list),是一个有序且可变的容器,在里面可以存放多个不同类型的元素。并且所放的元素可以修改。(先放的永远是在后放的前面)

定义

列表的定义是大括号[ ](注意,在这里的大括号是([ ]),要和花括号({})要区别开来)括起来,里边每个元素都用逗号隔开。

例如:

1
2
3
user_list = ["苍老师","有坂深雪","大桥未久"] 字符串 单一类型
number_list = [98,88,666,12,-1] 整型单一类型
data_list = [1,True,"Alex","宝强","贾乃亮"] 多个类型

可变性:

1
2
3
4
5
user_list = []
user_list.append("铁锤")
user_list.append(123)
user_list.append(True)
print(user_list) # ["铁锤",123,True]

不可变类型:字符串、布尔、整型(已最小,内部数据无法进行修改)(在Python中创建,就已经是最小的单位了不能对他进行修改了)

可变类型:列表(内部数据元素可以修改)

独有功能

Python中为所有的列表类型的数据提供了一批独有的功能。

在开始学习列表之前,先来做一个字符串和列表的对比

  • 字符串,不可变,即:创建好之后内部就无法修改。【独有功能都是新创建一份数据】
1
2
3
4
name = "alex"
data = name.upper()
print(name)
print(data)
  • 列表,可变,即:创建号之后内部元素可以修改。【独有功能基本上都是直接操作列表内部,不会创建新的一份数据】
1
2
3
4
user_list = ["车子","妹子"]
user_list.append("嫂子")

print(user_list) # ["车子","妹子","嫂子"]

列表追加

追加,在原列表中尾部追加值

1
2
3
4
5
6
data_list = []
v1 = input("请输入姓名") # "alex"
v2 = input("请输入姓名") # "eric"
data_list.append(v1)
data_list.append(v2)
print(data_list) # ["alex","eric"]
1
2
3
4
5
6
7
8
9
10
# 案例1
user_list = []

while True:
user = input("请输入用户名(Q退出)")
if user == "Q":
break
user_list.append(user)

print(user_list)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 案例2
welcome = "欢迎使用NB游戏".center(30,"*")
print(welcome)

user_count = 0
while True:
count = input("请输入游戏人数:")
if count.isdecimal():
user_count = int(count)
break
else:
print("输入格式错误,人数必须是数字。")

message = "{}人参加游戏NB游戏。".format(user_count)

user_name_list = []
for i in range(1,user_count+1):
tips = "请输入玩家姓名({}/{}):".format(i,user_count)
name = input(tips)
user_name_list.append(name)

print(user_name_list)

列表批量追加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tools = ["搬砖","菜刀","榔头"]
weapon = ["AK47","M6"]
tools.extend(weapon) # weapon中的值逐一追加到tools 可以在()内直接输入一个列表,也可 以先定义一个变量
注意先后顺序
#.extend还可以用于字符串,将字符串中的每一个元素逐一加入列表中
print(tools)

# 等价于 (扩展)
tools = ["搬砖","菜刀","榔头"]
weapon = ["AK47","M6"]
for item in weapon:
tools.append(item)
#还是按顺序循环
print(tools)
其实extend的内部程序其实就是该程序

批量追加的两种方法

列表插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
user_list = ["苍老师","有坂深雪","大桥未久"]
user_list.insert(0,"马蓉") # 把马蓉放在第0个索引位置,原先的元素后退一格
user_list.insert(2,"李小璐") # 把李小璐放在第2个索引位置,
print(user_list) #['马蓉', '苍老师', '李小璐', '有坂深雪', '大桥未久']



# 案例
name_list = []
while True:
name = input("请输入购买火车票用户姓名(Q/q退出):")
if name.upper() == "Q":
break
if name.startswith("刁"):
name_list.insert(0,name)
else:
name_list.append(name)
print(name_list)
  • 注意:

    当索引值小于0的时候,程序就会永远把这个数据放在最前面

    当索引值大于列表长度的时候,程序就会永远把这个数据放在最后面

列表根据值删除

(从左到右找到第一个删除)【慎用,里面没有就会报错】

1
2
3
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
user_list.remove("Alex")
print(user_list) #['王宝强', '陈羽凡', '贾乃亮', 'Alex']
  • 如果要删除多次:要进行循环
  • 如果想要解决报错问题,可以先判断一下这个字符串存在不存在这个列表,再进行删除
1
2
3
4
5
6
7
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
while True:
if "Alex" in user_list:
user_list.remove("Alex")
else:
break
print(user_list) #['王宝强', '陈羽凡', '贾乃亮']
1
2
3
4
5
6
7
8
9
10
# 案例:自动抽奖程序
import random
data_list = ["iphone12","二手充气女友","大保健一次","泰国5日游","避孕套"]

while True:
name = input("自动抽奖程序,请输入自己的姓名:")
# 随机从data_list抽取一个值出来
value = random.choice(data_list)
print("恭喜{},抽中{}。".format(name,value))
data_list.remove(value)

列表根据索引踢出元素

1
2
3
4
5
6
7
8
9
10
11
12
13
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
# 0 1 2 3 4
user_list.pop(1)
print(user_list) # ['王宝强', 'Alex', '贾乃亮', 'Alex']

user_list.pop() # 如果不写索引位置默认将最后一个元素删除
print(user_list) # '王宝强', 'Alex', '贾乃亮']

item = user_list.pop(1)
# 执行完后将列表的位置1元素删除了
# 并且把删除的元素赋值给了变量item
print(item) # ”alex“
print(user_list) # ['王宝强', '贾乃亮']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ["alex","李杰","eric","武沛齐","老妖","肝胆"]
user_queue = []

while True:
name = input("北京~上海火车票,购买请输入姓名排队(Q退出):")
if name == "Q":
break
user_queue.append(name)
tick_count = 3
for i in range(tick_count):
username = user_queue.pop(0)
message = "恭喜{},购买火车票成功。".format(username)
print(message)
# user_queue = ["武沛齐","老妖","肝胆"]
faild_user = "、".join(user_queue)

faild_message = "非常抱歉,票已售完,以下几位用户请选择其他出行方式,名单:{}。".format(faild_user)
print(faild_message)

列表清空

1
2
3
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
user_list.clear()
print(user_list) # []

列表根据值获取索引

1
2
3
4
5
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
# 0 1 2 3 4
index = user_list.index("Alex")
print(index) # 2
print(user_list) # ['王宝强', '陈羽凡', 'Alex', '贾乃亮', 'Alex']
  • 如果要解决报错:可以先判断
1
2
3
4
5
6
7
8
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
# 0 1 2 3 4
if "Alex" in user_list:
index = user_list.index("Alex")
print(index) # 2
else:
print("不存在")
print(user_list) # ['王宝强', '陈羽凡', 'Alex', '贾乃亮', 'Alex']

列表元素排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 数字排序
num_list = [11,22,4,5,11,99,88]
print(num_list)
num_list.sort() # 进行从小到大进行排列
print(num_list) #[4, 5, 11, 11, 22, 88, 99]
# 如果从大到小排列
num_list.sort(reverse=True)
# sort()的括号内除了可以加上面的东西,还可以加key=函数表达式
print(num_list) # [99, 88, 22, 11, 11, 5, 4]
# 字符串排序
user_list = ["王宝强","ab陈羽凡","Alex","贾乃亮","贾乃","1"]
# [29579, 23453, 24378]
# [97, 98, 38472, 32701, 20961]
# [65, 108, 101, 120]
user_list.sort()
# sort的排序的原理
# 如果是字符串进行排序
# 在程序内部则会将字符串转化为对应的unicode的编码
# 将所有字符串中的每个字符都先转化成unicode的码点
# 例如:["X X X","X X X X X "]
# 先将每个字符的第一个码点(这里用x代表,即第一个X)
# 如果第一个码点一样,则开始比较第二位
# 如果第二位一样,就比第三位
# 比到第四位时,如果一个字符无第四位,一个字符串有第四位
# 那么就无第四位的那个字符串跟小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
print(user_list)
# 验证如何排序(需要获取unicod编码)
data = "1"

v1 = ord("王")
print(v1) # 29579 (十进制表示)
print(hex(v1)) # 0x738b(十六进制表示)
print(bin(v1)) # 0b111001110001011(2进制)

# 一个一个转化太麻烦,用循环
for char in data:
v1 = ord(char)
print(v1)
# 29579 10进制
# 23453 10进制
# 24378 10进制

data_list = []
for char in data:
v1 = ord(char)
data_list.append(v1)
print(data)
print(data_list)
  • 注意:排序时内部元素无法进行比较时,程序会报错(尽量数据类型统一)

    有些数据类型之间可以比较比如布尔类型与整型,有些数据类型之间不可以比较,比如整型和字符串

反转原列表

1
2
3
4
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
user_list.reverse()

print(user_list)

公共功能

列表相加

  • 相加,两个列表相加获取生成一个新的列表
1
2
3
4
5
6
7
8
data = ["赵四","刘能"] + ["宋晓锋","范德彪"]

print(data) # ["赵四","刘能","宋晓锋","范德彪"]

v1 = ["赵四","刘能"]
v2 = ["宋晓锋","范德彪"]
v3 = v1 + v2
print(v3) # ["赵四","刘能","宋晓锋","范德彪"]

列表相乘

  • 列表*整型:将列表中的元素再创建N份并生成一个新的列表
1
2
3
4
5
6
7
data = ["赵四","刘能"] * 2
print(data) # ["赵四","刘能","赵四","刘能"]

v1 = ["赵四","刘能"]
v2 = v1 * 2
print(v1) # ["赵四","刘能"]
print(v2) # ["赵四","刘能","赵四","刘能"]
  • 注意:只创建一个新列表,只是里面的元素相乘了而已

运算符in包含

  • 由于列表内部是由多个元素组成,可以通过in来判断元素是否再列表中。
1
2
3
4
5
6
7
8
9
10
user_list = ["狗子","二蛋","沙雕","alex"]
result = "alex" in user_list
# result = "alex" not in user_list
print(result) # True

if "alex" in user_list:
print("在,把他删除")
user_list.remove("alex")
else:
print("不在")
  • 注意:该功能的返回值是布尔类型,一般是用来判断的

  • 补充:字符串类型的也可以用in判断在不在里面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
text = "打倒小日本"
data = "日" in text # True


# 案例
user_list = ["狗子","二蛋","沙雕","alex"]
if "alex" in user_list:
print("在,把他删除")
user_list.remove("alex")
else:
print("不在")

# 案例
user_list = ["王宝强","陈羽凡","Alex","贾乃亮","Alex"]
if "Alex" in user_list:
index = user_list.index("Alex")
user_list.pop(index)

# 案例:敏感词替换
text = input("请输入文本内容:")

forbidden_list = ["草","欧美","日韩"]
for item in forbidden_list:
text = text.replace(item,"**")
print(text)
  • 注意:列表检查元素是否存在时,是否采用逐一比较的方式,效率会比较低

索取长度

1
2
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
print(len(user_list)) # 3

列表索引

一个元素的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 读
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
print(user_list[0])
print(user_list[2])
print(user_list[3]) # 报错

# 改
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[0] = "武沛齐"
print(user_list) # ['武沛齐', '刘华强', '尼古拉斯赵四']

# 删
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
del user_list[1] # 删除

user_list.remove("刘华强") # 删除
ele = user_list.pop(1) # 删除并可以获取

列表切片

  • 多个元素的操作(很少用)
1
2
3
4
5
6
# 读
user_list = ["范德彪","刘华强","尼古拉斯赵四"]

print(user_list[0:2])
print(user_list[1:])
print(user_list[:-1])
  • 注意:索引的原则还是前取后不取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 改
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[0:2] = [11,22,33,44]
print(user_list) # 输出 [11,22,33,44,"尼古拉斯赵四"]

user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[2:] = [11,22,33,44]
print(user_list) # 输出 ["范德彪","刘华强","尼古拉斯赵四",11,22,33,44]

# 如果你写的索引超出了该列表长度,那么程序会自动在后面追加,即加上后面的值

user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[30000:] = [11,22,33,44]
print(user_list) # ["范德彪","刘华强","尼古拉斯赵四",11,22,33,44]
# 如果输出的要索引的值超过列表长度,程序并不会报错
# 程序只会把所改的值加到列表的最后面


user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[10000:] = [11,22,33,44]
print(user_list) # ["范德彪","刘华强","尼古拉斯赵四",11,22,33,44]
user_list = ["范德彪","刘华强","尼古拉斯赵四"]
user_list[-10000:1] = [11,22,33,44]
print(user_list) # [11,22,33,44,"刘华强","尼古拉斯赵四"]


# 删除(按照范围去删除)
user_list = user_list = ["范德彪","刘华强","尼古拉斯赵四"]
del user_list[1:]
print(user_list) # ["范德彪"]

列表步长

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
user_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]
# 0 1 2 3 4
print(user_list[1:4:2]) #
print(user_list[0::2])
print(user_list[1::2])
print(user_list[4:1:-1])

# 案例:实现列表的翻转
user_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]
new_data = user_list[::-1]
print(new_data)


data_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]
data_list.reverse()
print(data_list)
  • 注意:revers只是将原来的列表调换数据,而第一个列表的翻转是创建一个新列表
1
2
3
4
5
# 给你一个字符串请实现字符串的翻转
name = "武沛齐"
name[::-1] # 这种方式可以翻转
data = name.reverse # 这种方式不能翻转
print(data)
  • 注意:字符串的翻转没有reverse

列表for循环

1
2
3
4
5
6
7
8
9
10
data_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]
for item in user_list:
print(item)

user_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]

for index in range(5):
#for index in range(len(user_list)):
item = user_list[index]
print(item)
  • 切记,循环的过程种对数据进行删除会踩坑【面试题】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 错误方式,有坑,结果不是你想要的
# 千万不要在循环的过程中,边循环获取列表的数据 边删除列表的数据
user_list = ["刘的话","范德彪","刘华强","刘尼古拉斯赵四","宋小宝","刘能"]
for item in user_list:
# 第一次索引拿 0 ,
# 程序判断有刘,那么就删除了0
# 那么”范德彪“就成了第0个
# 而循环后因为索引0已经循环完毕
# 那么就会索引第1个
# 此时1是”刘华强“
# 并不是”范德彪“
# 所以这样编程序会导致循环遗漏
if item.startswith("刘"):
user_list.remove(item)
print(user_list) # ['范德彪', '刘尼古拉斯赵四', '宋小宝']
  • 解决这个问题的办法就是倒着处理:
1
2
3
4
5
6
7
8
9
10
11
12
13
user_list = ["刘的话","范德彪","刘华强","刘尼古拉斯赵四","宋小宝","刘能"]
for index in range(len(user_list)-1,-1,-1):
# 5 4 3 2 1 0
# 程序删除后面的值,并不影响前面的排序
# 如索先索引5”刘能“
# 索引完满足条件
# 删去
# 接下来程序要索引4
# 索引”宋小宝”
item = user_list[index]
if item.startswith("刘"):
user_list.remove(item)
print(user_list) # ['范德彪','宋小宝']

转换

  • 就目前而言,所学的其他的数据类型基本上是没有办法转成列表,有的数据类型也可以转换但是没有什么意义

    ·int、bool类型无法转化成列表

  • str转换列表

1
2
3
4
name = "武沛齐"

data = list(name)
print(data) # ['武', '沛', '齐']
  • 其他数据类型转化列表
1
2
3
4
5
6
7
8
9
10
11
#元组转化列表
v1 = (11,22,33,44) # 元组
vv1 = list(v1)
print(vv1) # [11, 22, 33, 44]

#意义:元组是不可变类型,而列表的元素是可变类型,转化为列表可以修改

#集合转换成列表
v2 = {"alex","eric","dsb"} # 集合
vv2 = list(v2)
print(vv2) # ['eric', 'alex', 'dsb']

嵌套

列表属于容器,内部可以存放各种数据,所以他也支持列表的嵌套,如:

1
2
3
4
data = ["谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝"]
# 1 2 3 4 5
# 列表的嵌套就是列表里面的元素还有列表
# 与高中知识集合可以作为元素基本相同
  • 对于嵌套的值,可以根据之前学习的索引知识点来进行学习,例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
data = ["谢广坤",["海燕","赵本山"],True,[11,22,33,44],"宋小宝"]

print(data[0]) # 谢广坤
print(data[1]) # ['海燕', '赵本山']
print(data[0][2])# 坤
# 索引后的元素0即字符串,再对字符串索引
print(data[1][-1]) # 赵本山
data.append(666)
print(data)
# ['谢广坤', ['海燕', '赵本山'], True, [11, 22, 33, 44], '宋小宝', 666]
del data[-2]
print(data)
# ['谢广坤', ['海燕', '赵本山'], True, [11, 22, 33, 44], 666]
data[1].append("谢大脚")
print(data)
# ['谢广坤', ['海燕', '赵本山', '谢大脚'], True, [11, 22, 33, 44], 666]
# 先索引元素1,再将“谢大脚”加入元素1即元素列表中
#del data[-2]
#print(data)
# ['谢广坤', ['海燕', '赵本山', '谢大脚'], True, 666]
data[-2][1] = "alex"
print(data)
# ['谢广坤', ['海燕', '赵本山', '谢大脚'], True, [11, 'alex', 33, 44], 666]
# 注意要得出此结果要把上面的:
# del data[-2]
# print(data)
# 注释掉

data[1][0:2] = [999,666]
print(data)
# '谢广坤', [999, 666, '谢大脚'], True, [11, 'alex', 33, 44], 666]



# 案例
# 创建用户列表
# 用户列表应该长这样:
# [["alex","123"],["eric","666"]]


# user_list = [["alex","123"],['eric',"666"]]
# user_list.append(["alex","123"])
# user_list.append(['eric',"666"])
# 这样写代码会把代码写死

# 灵活的代码如下

user_list = []
while True:
user = input("请输入用户名:")
pwd = input("请输入密码:")

data = []
data.append(user)
data.append(pwd)

user_list.append(data)


# 简化

user_list = []
while True:
user = input("请输入用户名(Q退出):")
if user == "Q":
break
pwd = input("请输入密码:")
data = [user,pwd]
use_list.append(data)

print(user_list)

元组

  • 列表(list),是一个有序且可变的容器,在里面可以存放多个不同类型的元素。

    元组(tuple),是一个有序且不可变的容器,在里面可以存放多个不同类型的元素。

    如何体现不变呢?

    记住一句话:《“我儿子永远不能换成别人,但是我儿子可以长大“》

定义

1
2
3
4
5
6
7
8
v1 = (11,22,33)
v2 = ("李杰","Alex")
v3 = (True,123,"Alex",[11,22,33])
# 儿子可以长大体现在:
# 如果元组里面的元素有列表
# 那么元组里面的那个列表
# 不能换成新的列表
# 但是可以在该列表里面添加元素
  • 注意:建议在元组的最后多加一个逗号,用于标识他是一个元组
1
2
 建议:建议在与那组的最后多加一个逗号
v3 = ("李杰","Alex",) # 这个v3 与上面的v2是一样的
  • 特殊情况
1
2
3
4
5
6
7
8
9
10
d1 = (1)
# 在这里单个元素时,没有逗号程序会把元组当(1)当作整型1
d2 = (1,)
# 带个逗号就不会当成整型1
# 有多个逗号不会了

# 面试题:

1.比较值v1 = (1) 和v2 = 1 和v3 = (1,),有什么区别?
2.比较值v1 =((1),(2),(3))和 v2 = ((1,)(2,)(3,),)有什么区别?

我的答案:

(1) v1表示整型,v2表示整型,v3表示元组,v1与v2没什么区别

(2) v1表示元组,里面的元素是整型,v2也表示元组,里面的元素表示元组

标准答案:

(1) v1整型,v2整形,v3元组

(2) v1元组,里面元素是1、2、3

v2元组,里面元素是元组(1)、(2)、(3)

独有功能

公共功能

元组相加

  • 相加,两个元组相加获取生成一个新的元组。
1
2
3
4
5
6
data = ("赵四","刘能",) + ("宋晓锋","范德彪",)
print(data) # ('赵四', '刘能', '宋晓锋', '范德彪')
v1 = ("赵四","刘能",)
v2 = ("宋晓锋","范德彪",)
v3 = v1 + v2
print(v3) # ('赵四', '刘能', '宋晓锋', '范德彪')

元组相乘

  • 相乘,列表*整型 将列表中的元素再创建N份并生成一个新的列表
1
2
3
4
5
6
7
data = ("赵四","刘能",)*2
print(data) # ('赵四', '刘能', '赵四', '刘能')

v1 = ("赵四","刘能",)
v2 = v1 * 2
print(v1) # ("赵四","刘能",)
print(v2) # ('赵四', '刘能', '赵四', '刘能')

获取长度

1
2
user_list = ("范德彪","刘华强","尼古拉斯赵四",)
print(len(user_list))

元组索引

1
2
3
4
user_list = ("范德彪","刘华强","尼古拉斯赵四",)
print(user_list[0])
print(user_list[2])
print(user_list[3])

元组切片

1
2
3
4
user_list = ("范德彪","刘华强","尼古拉斯赵四",)
print(user_list[0:2])
print(user_list[1:])
print(user_list[:-1])

元组步长

1
2
3
4
5
user_list = ("范德彪","刘华强","尼古拉斯赵四",)
print(user_list[1:4:2])
print(user_list[0:2:2])
print(user_list[1::2])
print(user_list[4:1:-1])
  • 注意:索引、切片和步长是生成一个新的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#字符串&元组
# 需求,翻转元组。
user_list = ("范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能")
# 内部翻转不了
# 但是在外部可以创建一个新的翻转后的元组
data = user_list[::-1]
#列表


# 列表的翻转
user_list = ["范德彪","刘华强","尼古拉斯赵四","宋小宝","刘能"]
data = user_list[::-1]

user_list.reverse()
print(user_list)

元组for循环

1
2
3
4
5
6
7
8
9
user_list = ("范德彪","刘华强","尼古拉斯赵四",)
for item in user_list:
print(item)

user_list = ("范德彪","刘华强","尼古拉斯赵四",)
for item in user_list:
if item == '刘华强':
continue
print()
  • 目前:只有str、list、tuple可以被for循环。“xxx” [11,22,33 ] (111,22,33)
1
2
3
for index in range(len(user_list)):
item = user_list[index]
print(item)

转换

  • 其他类型转换为元组,使用tuple(其他类型),目前只有字符串和列表可以转换为元组
1
2
3
4
5
6
7
name = "武沛齐"
data = tuple(name)
print(data) #('武', '沛', '齐')

name = ["武沛齐",18,"pythonav"]
data = tuple(name)
print(data)

嵌套

  • 由于元组和列表都可以充当容器,他们内部可以放很多元素,并且支持元素内的各种嵌套。
1
2
3
4
5
6
7
8
9
10
tu = ('今天姐姐不在家','姐夫和小姨子再客厅聊天',('姐夫问小姨子税后多少钱','小姨子低声说道说和姐夫还钱',))
tu1 = tu[0]
tu2 = tu[1]
tu3 = tu[2]
tu4 = tu[2][1]

print(tu1) # 今天姐姐不在家
print(tu2) # 姐夫和小姨子再客厅聊天
print(tu3) #('姐夫问小姨子税后多少钱', '小姨子低声说道说和姐夫还钱')
print(tu4) # 小姨子低声说道说和姐夫还钱