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

詳解 (共 2 筆)

#6174563
zip() 函數 是一個非常有用的工具,...
(共 444 字,隱藏中)
前往觀看
4
0
#6427084

首先,我們來執行這段 Python 程式碼,確定 z 的內容:

z = [(x, y) for x,y in zip([1,2,3],[3,1,4]) if x+y>=4]

  1. zip([1,2,3],[3,1,4]): 這個 zip 函式會將兩個列表的對應元素配對,生成以下序列:

    • (1, 3)
    • (2, 1)
    • (3, 4)
  2. for x,y in ...: 接下來,列表推導式會逐一取出這些配對,將第一個元素賦給 x,第二個賦給 y。

  3. 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