- 难度级别: 中等
1)以下程序的输出是什么?
L1 = [] L1.append([1, [2, 3], 4]) L1.extend([7, 8, 9]) print(L1[0][1][1] + L1[2])
a) 类型错误:只能将列表(不是“int”)连接到列表
b) 12
c) 11
d) 38
答:(c)
解释: 在 print() 中,使用了索引。L1[0] 表示 [1, [2, 3], 4], L1[0][1] 表示 [2, 3], L1[0][1][1] = 3 和 L1[2] = 8 . 因此,两个整数相加,3 + 8 = 11,输出为 11。
2) 以下程序的输出是什么?
L1 = [1, 1.33, 'HY', 0, 'NO', None, 'G', True] val1, val2 = 0, '' for x in L1: if(type(x) == int or type(x) == float): val1 += x else if(type(x) == str): val2 += x else: break print(val1, val2)
a) 2 HYNO
b) 2.33 HYNOG
c) 2.33 HYNONoneGTrue
d) 2.33 HYNO
答: (d)
解释: val1 将只有整数和浮点值 val1 = 1 + 1.33 + 0 = 2.33 和 val2 将有字符串 值 val2 ='GFG' + 'NO' = 'GFGNO'。字符串 'G' 不会是 val2 的一部分,因为 for 循环将在 None 处中断, 因此 'G' 不会添加到 val2。
3) 以下程序的输出是什么?
L1 = [1, 2, 3, 4] L2 = L1 L3 = L1.copy() L4 = L3 L1[0] = [5] print(L1, L2, L3, L4)
a) [5, 2, 3, 4] [5, 2, 3, 4] [1, 2, 3, 4] [1, 2, 3, 4]
b) [[5], 2, 3, 4 ] [[5], 2, 3, 4] [[5], 2, 3, 4] [1, 2, 3, 4]
c) [5, 2, 3, 4] [5, 2, 3, 4] [5, 2, 3, 4] [1, 2, 3, 4]
d) [[5], 2, 3, 4] [[5], 2, 3, 4] [1, 2, 3 , 4] [1, 2, 3, 4]
答: (d)
解释: L2 是指向与 L1 相同对象的引用, 而 L3 和 L4 是 List L1 的单递归复制(浅拷贝)。 L1[0] = [5],意味着在索引 0 处,列表 [5] 将存在,而不是整数值 5。
4) 以下程序的输出是什么?
import sys L1 = tuple() print(sys.getsizeof(L1), end = " ") L1 = (1, 2) print(sys.getsizeof(L1), end = " ") L1 = (1, 3, (4, 5)) print(sys.getsizeof(L1), end = " ") L1 = (1, 2, 3, 4, 5, [3, 4], 'p', '8', 9.777, (1, 3)) print(sys.getsizeof(L1))
a) 0 2 3 10
b) 32 34 35 42
c) 48 64 72 128
d) 48 144 192 480
答: (c) 解释: Empty Tuple 有 48 字节作为开销大小,每个附加元素需要 8 字节。 (1, 2) 尺寸:48 + 2 * 8 = 64 (1, 3, (4, 5)) 尺寸:48 + 3 * 8 = 72 (1, 2, 3, 4, 5, [3, 4] , 'p', '8', 9.777, (1, 3)) 尺寸:48 + 10 * 8 = 128
5) 以下程序的输出是什么?
T1 = (1) T2 = (3, 4) T1 += 5 print(T1) print(T1 + T2)
a) TypeError
b) (1, 5, 3, 4)
c) 1 TypeError
d) 6 TypeError
答: (d) 解释: T1 是整数,T2 是元组。这样T1就会变成1 + 5 = 6。但是整数和元组不能相加,会抛出TypeError。
如果大家发现任何不正确的地方,可以在下方评论区告诉我,互相学习,共同进步!