学习笔记,有错必纠 不可变的元祖 元祖是一个值的一个序列,其中的值可以是任何类型,并且按照整数下标索引,这和列表很像。但是元祖和列表之间重要的区别是,元祖是不可变的
学习笔记,有错必纠
不可变的元祖
元祖是一个值的一个序列,其中的值可以是任何类型,并且按照整数下标索引,这和列表很像。但是元祖和列表之间重要的区别是,元祖是不可变的。
语法上,元祖就是用逗号分隔的一列值,虽然并不必需,但是元祖常常用括号括起来:
t01 = 'a','b','c't02 = ('a','b','c')
print(type(t01))
print(type(t02))
输出:
<class 'tuple'><class 'tuple'>
若新建只包括一个元素的元祖,需要在元素后面添加逗号,而用括号括起来的单独的值并不是元祖:
t03 = 'a',t04 = ('a')
print(type(t03))
print(type(t04))
输出:
<class 'tuple'><class 'str'>
元组赋值
我们如何交换两个变量的值呢?
按照传统的赋值方式,需要使用一个临时变量,例如要交换a和b:
a = 1b = 2
temp = a
a = b
b = temp
print('a:', a)
print('b:', b)
输出:
a: 2b: 1
这种解决方案很笨拙,而元组赋值则更优雅:
a = 1b = 2
a, b = b, a
print('a:', a)
print('b:', b)
元祖赋值中,左边是一个变量的元组,右边是表达式的元组。右边所有的表达式,都会在任何赋值操作进行之前完成求值。
输出:
a: 2b: 1
赋值时,左边变量的个数和右边值的个数必须相同,否则会报错:
a, b = 10, 20, 30报错信息:
ValueError: too many values to unpack (expected 2)