16. 針對 Python 指令 z = [(x, y) for x,y zip([1,2,3],[3,1,4]) if x+y>=4]
所得的 z,下列敘述何者正確?
(A) sum([w[0] for w in z])= 4
(B) z 不包含(3,4)
(C) z 是一個包含三筆二維資料的 list
(D) z 不包含(3,3)
答案:登入後查看
統計: A(34), B(15), C(32), D(34), E(0) #3246971
統計: A(34), B(15), C(32), D(34), E(0) #3246971
詳解 (共 2 筆)
#6427084
首先,我們來執行這段 Python 程式碼,確定 z 的內容:
z = [(x, y) for x,y in zip([1,2,3],[3,1,4]) if x+y>=4]
-
zip([1,2,3],[3,1,4]): 這個 zip 函式會將兩個列表的對應元素配對,生成以下序列:
- (1, 3)
- (2, 1)
- (3, 4)
-
for x,y in ...: 接下來,列表推導式會逐一取出這些配對,將第一個元素賦給 x,第二個賦給 y。
-
if x+y>=4: 這是過濾條件,只有 x 和 y 的和大於或等於 4 的配對會被包含在 z 中。
讓我們逐一檢查每個配對:
-
配對 (1, 3):
- x = 1, y = 3
- x + y = 1 + 3 = 4
- 4 >= 4 為 True。所以 (1, 3) 會被包含在 z 中。
-
配對 (2, 1):
- x = 2, y = 1
- x + y = 2 + 1 = 3
- 3 >= 4 為 False。所以 (2, 1) 不會被包含在 z 中。
-
配對 (3, 4):
- x = 3, y = 4
- x + y = 3 + 4 = 7
- 7 >= 4 為 True。所以 (3, 4) 會被包含在 z 中。
因此,最終的列表 z 為:z = [(1, 3), (3, 4)]。
現在,我們來判斷各個敘述的正確性:
-
(A) sum([w[0] for w in z]) = 4
- [w[0] for w in z] 會從 z 中的每個元組(tuple)取出第一個元素,生成新列表 [1, 3]。
- sum([1, 3]) = 1 + 3 = 4。
- 故敘述 (A) 正確。
-
(B) z 不包含(3,4)
- 根據我們的計算,z 中包含了 (3, 4)。
- 故敘述 (B) 錯誤。
-
(C) z 是一個包含三筆二維資料的 list
- z 包含了兩個元組,即兩筆二維資料,而不是三筆。
- 故敘述 (C) 錯誤。
-
(D) z 不包含(3,3)
- 在 zip([1,2,3],[3,1,4]) 的過程中,並沒有生成 (3,3) 這個配對。因此,z 當然不會包含 (3,3)。
- 故敘述 (D) 正確。
這是一個複選題,所以有兩個正確答案。
答案是 (A) 和 (D)。
1
0