元组
既能像列表那样同时容纳多种类型的对象,也有字符串不可变的特性
列表 [元素1,元素2,元素3,......]
元组 (元素1,元素2,元素3,......)
rhyme=(1,2,3,4,5,"上山大老鼠")
rhyme
(1, 2, 3, 4, 5, '上山大老鼠')
rhyme=1,2,3,4,5,"上山大老鼠" #也可以不用写括号
rhyme
(1, 2, 3, 4, 5, '上山大老鼠')
rhyme[0] #元组也可以通过下标获取元素
1
rhyme[-1] #最后一个元素下标是 -1
'上山大老鼠'
rhyme[:3] #也可以用切片
(1, 2, 3)
rhyme[3:]
(4, 5, '上山大老鼠')
rhyme[:]
(1, 2, 3, 4, 5, '上山大老鼠')
rhyme[::2]
(1, 3, 5)
rhyme[::-1]
('上山大老鼠', 5, 4, 3, 2, 1)
元组内容不可变 所以无法修改元组内容
元组只支持查
nums=(3,1,9,6,8,3,5,3)
nums.count(3) #数一下 3 有几个
3
heros=("蜘蛛侠","蜘蛛侠","黑寡妇")
heros.index("黑寡妇") #查"黑寡妇"的下标
2
s=(1,2,3)
t=(4,5,6)
s+t #元组的拼接
(1, 2, 3, 4, 5, 6)
w=s,t #元组的嵌套
w
((1, 2, 3), (4, 5, 6))
for each in s: #元组的迭代
print(each)
1
2
3
for i in w: #嵌套的元组使用嵌套的循环
for each in i:
print(each)
1
2
3
4
5
6
s=(1,2,3,4,5)
[each*2 for each in s] #列表推导式
[2, 4, 6, 8, 10]
在不引起歧义的情况下,python允许你省略圆括号,可以随时都用圆括号
如何生成只有一个元素的元组
x=(520,)
x
(520,)
type(x)
<class 'tuple'> #tuple是元组的意思
打包&解包
生成一个元组称为打包,将他们一次性赋值给3个变量名 称为解包
t=(123,"Fish",3.12) #打包
t
(123, 'Fish', 3.12)
x,y,z=t #解包
x
123
y
'Fish'
z
3.12
a,b,c,d="love" #同样适用于字符串和列表
a
'l'
b
'o'
c
'v'
d
'e'
a,b,*c="love" #小技巧
a
'l'
b
'o'
c
['v', 'e']
x,y=10,20 #多重赋值
x
10
y
20
打包和解包适用于任何序列类型:列表,字符串
赋值号左边的变量名数量要和右侧序列的元素数量一致
多重赋值:逻辑就是 先将元素打包 然后再解包
元组中的元素是不可变的,但是元组若是指向一个列表,那么我们依然是可以修改列表里面的内容的。
s=[1,2,3]
t=[4,5,6]
w=(s,t) #元组指向列表 那么可以修改列表里的内容
w
([1, 2, 3], [4, 5, 6])
w[0][0]=0
w
([0, 2, 3], [4, 5, 6])