十四、元祖
元祖是不可变的
1、语法:
列表:[元素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, '上山打老虎')
2、元祖可以通过下标来获取元素
rhyme[0]
1
rhyme[-1]
'上山打老虎'
3、元祖支持切片操作
rhyme[:3]
(1, 2, 3)
rhyme[3:]
(4, 5, '上山打老虎')
rhyme[:]
(1, 2, 3, 4, 5, '上山打老虎')
4、元祖—查
count和index方法
nums=(3,1,9,6,8,3,5,3)
nums.count(3)
3
heros = ("蜘蛛侠","绿巨人","黑寡妇")
heros.index("黑寡妇")
2
5、运算符—(+和*)
s = (1,2,3)
t = (4,5,6)
s+t
(1, 2, 3, 4, 5, 6)
s*3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
6、嵌套
s = (1,2,3)
t = (4,5,6)
w = s,t
w
((1, 2, 3), (4, 5, 6))
7、迭代
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
8、列表推导式对元祖进行转换
s = (1,2,3,4,5)
[each *2 for each in s]
[2, 4, 6, 8, 10]
9、如何生成只有一个元素的元祖
错误写法:
x = (520)
x
520
type(x)
<class 'int'>
正确写法:
x = (520,)
x
(520,)
type(x)
<class 'tuple'>
10、打包和解包
打包:就是生成一组元祖
t =(123,"Love",3.14)
t
(123, 'Love', 3.14)
解包:将打包的元祖一次性赋值给三个变量名的行为
x,y,z = t
x
123
y
'Love'
z
3.14
这种打包和解包的行为适用于任何的序列类型,
比如列表:
t =[123,"Love",3.14]
t
[123, 'Love', 3.14]
x,y,z = t
x
123
y
'Love'
z
3.14
比如字符串:
a,b,c,d = "Love"
a
'L'
b
'o'
c
'v'
d
'e'
需要注意的是:
赋值号左边的变量名数量,必须跟右侧序列的元素数量一致。
小技巧:
a,b,*c = "Love"
a
'L'
b
'o'
c
['v', 'e']
单独一个_,表示一个匿名变量,临时变量。
11、元祖真的是固若金汤么?
元祖中的元素虽然是不可变的,但如果元祖中的元素是指向一个可变的列表,那么我们依然是可以修改列表里面的内容的。
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])