1.下列哪种不是Python元组的定义方式:(A)
A.(1)
B.(1, )
C.(1, 2)
D.(1, 2, (3, 4))
解析:
Python 中的 tuple 结构为 “不可变序列”,用小括号表示。为了区别数学中表示优先级的小括号,当 tuple 中只含一个元素时,需要在元素后加上英文逗号。否则会被python认为是int类型,所以A选项结果应为(1,)而不是(1)。
2.在Python3中,以下程序结果为:(C)
one = (1, 2, 3) two = ('a', 'b') print(one+two)
A.None
B.报错
C.(1, 2, 3, 'a', 'b')
D.[1, 2, 3, 'a', 'b']
解析:
在python3中,元组的“+”运算表示连接,因此程序结果会生成一个新的元组:(1, 2, 3, 'a', 'b')。
3.在python3中,关于元组的计算如下:(C)
one = (1, 2, 3) one[2] = 4 print(one[2])
A.None
B.报错
C.4
D.(4)
解析:
在python3中元组中的元素值是不允许修改的,因此程序会报错:TypeError: 'tuple' object does not support item assignment。
4.执行以下程序,下列选项中,说法正确的是:(C)
tup = (1,2,[3,4]) ① tup[2]+=[5,6] ②
A.执行代码②后,变量tup[2]的id发生改变
B.①和②均可以执行而不会抛出异常
C.执行代码②时会抛出异常,最终tup的值为(1,2,[3,4,5,6])
D.执行代码②时会抛出异常,最终tup的值为(1,2,[3,4])
解析:
tup[2]是列表,列表是可变对象,对于可变对象,执行+=后并不会改变其id值;执行②时会抛出异常,“+=”的执行顺序是先对[3,4]执行+操作,其结果为[3,4,5,6],然后再执行”=“,此时会抛出异常,这是因为元组不允许元素的引用被重新赋值,尽管赋值后列表的id是不变的,若改成tup[2].extend([5,6])就不会抛出异常。
5.若 a = (1, 2, 3),下列哪些操作是合法的:(ABD)
A.a[1:-1]
B.a*3
C.a[2] = 4
D.list(a)
解析:
A选项为元组切片操作结果为(2,);B选项为元组运算结果为(1,2,3,1,2,3,1,2,3);C选项由于元组是不可变类型,故无法完成元组内元素修改操作;D选项为元组和列表转换,结果为[1,2,3]。