python开发的常见问题S12(列表和元组)

先决条件:list和元组
注意:
所有这些程序的输出都在Python3上进行了测试
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 , 'GFG' , 0 , 'NO' , None , 'G' , True ] val1, val2 = 0 , '' for x in L1: if ( type (x) = = int or type (x) = = float ): val1 + = x elif ( type (x) = = str ): val2 + = x else : break print (val1, val2)

a)2个GFGNO
b)2.33 GFGNOG
c)2.33 GFGNONoneGTrue
d)2.33 GFGNO
答案(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 = list (L1) 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是列表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)48144192480
答案(C)
说明:
空元组的开销大小为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
2)以下程序的输出是什么?
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)
说明:
【python开发的常见问题S12(列表和元组)】T1是整数, 而T2是元组。因此T1将变为1 + 5 =6。但是不能添加整数和元组, 它将引发TypeError。

    推荐阅读