112年檢察事務官三等程式語言
三、請寫出下列 Python 程式的執行結果為何?(20分) |
答:
def swap(x, y): temp = x x = y y = temp x = 2 y = 3 swap(x, y) print(x, y) print( ) l1 = [1, 2, 3, 4, 5] l2 = [6, 5, 4, 3, 2] l3 = [False, False, True, False, True] print([a if condition else b for a, b, condition in zip(l1, l2, l3)]) print( ) import numpy as np arr = np.array(l1) newarr = arr[arr % 2 == 0] print(newarr) print( ) import pandas as pd data = { 'A':[1, 2, 3], 'B':[4, 5, 6], 'C':[7, 8, 9]} df = pd.DataFrame(data) df['add'] = df.apply(np.sum, axis = 1) print(df) |
執行結果:
2 3
[6, 5, 3, 3, 5]
[2 4]
A B C add
0 1 4 7 12
1 2 5 8 15
2 3 6 9 18
說明:
1.這行程式碼只是簡單地輸出一個空行,作為兩段輸出之間的分隔。
print( ) |
2.這裡定義了三個列表:
l1 = [1, 2, 3, 4, 5] l2 = [6, 5, 4, 3, 2] l3 = [False, False, True, False, True] |
l1 是一個整數列表。
l2 是另一個整數列表。
l3 是一個布林值列表。
3.這行程式碼是程式的核心。它使用了一個名為列表生成式的 Python 功能,與此同時,還利用了 zip 函數來結合三個列表的元素。
print([a if condition else b for a, b, condition in zip(l1, l2, l3)]) |
(1)zip(l1, l2, l3) 將三個列表 l1、l2,和 l3 合併成一個新的可迭代對象,其中每一項是一個三元組,包含來自 l1、l2,和 l3 的對應元素。
(2)列表生成式逐一遍歷這些三元組。對於每一個三元組,它會根據 condition (即來自 l3 的布林值) 決定是否選擇 a (即來自 l1 的值) 或 b (即來自 l2 的值)。
(3)如果 condition 為 True,則選擇 a。
(4)如果 condition 為 False,則選擇 b。
4.結果是一個新的列表,它根據 l3 中的布林值選擇了 l1 和 l2 中的元素。
5.所以,給定這些列表的值,輸出會是 [6, 5, 3, 3, 5]。這是因為只有第三和第五 項的 condition 是 True`,所以它們分別選擇了 l1 中的3和5。其他項目都選擇了 l2 中的值。
6.使用 NumPy 進行陣列操作:
print( ) import numpy as np arr = np.array(l1) newarr = arr[arr % 2 == 0] print(newarr) |
輸入 NumPy 庫並建立一個陣列 arr。
使用布林索引來選擇所有偶數元素。
輸出結果為 [2, 4]。
7.使用 pandas 建立 DataFrame 並進行操作:
print( ) import pandas as pd data = { 'A':[1, 2, 3], 'B':[4, 5, 6], 'C':[7, 8, 9]} df = pd.DataFrame(data) df['add'] = df.apply(np.sum, axis = 1) print(df) |
(1)輸入 pandas 函式庫並建立一個 DataFrame df。
(2)使用 apply 函數沿著 axis = 1 (行方向) 對每一行的資料進行求和操作。
(3)將結果增加到新的 add 列。
(4)輸出的 DataFrame 如下:
A B C add 0 1 4 7 12 1 2 5 8 15 2 3 6 9 18 |
留言列表