日期:2023年10月6日
前言
由於 Python 的自訂函式可以回傳 list,如果要呼叫自訂函式修改 list 的內容相當簡單,只要將 list 的內容重設為回傳值即可,例如以下的程式碼:
# 修改1維 list
def myfunc(a):
a[2] = -1
return a
def myprint(a):
for i in range(len(a)):
print(a[i], end=" " if i < len(a)-1 else "\n")
data = [1]*5 # 內容為 [1, 1, 1, 1, 1]
print("1D List")
myprint(data)
print("Modify 1D List")
data = myfunc(data) # 內容變為 [1, 1, -1, 1, 1]
myprint(data)
# 修改2維 list
def myfunc(a):
a[2][2] = -1
return a
def myprint(a):
for i in range(len(a)):
for j in range(len(a[i])):
print(a[i][j], end=" " if j < len(a[i])-1 else "\n")
data = [[1]*5 for _ in range(3)] # 內容為 [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
print("2D List")
myprint(data)
print("Modify 2D List")
data = myfunc(data) # 內容變為 [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, -1, 1, 1]]
myprint(data)
但是 C++ 呼叫自訂函式時,無法回傳 array 或 vector,如果要使用自訂函式修改 array 或 vector 的內容,需要使用傳指標呼叫 (*) 或是 傳參考呼叫 (&),以下是簡單的例子。