這個問題在這里已經有了答案: 分配后串列意外更改,這是為什么以及如何防止它? (21 個回答) 2天前關閉。
有沒有一種方法可以復制您的串列,然后應用不同的方法從該串列副本中洗掉這個最大的專案?
我有以下代碼:
def largest_two(target_list):
largest = max(target_list)
target_list2 = target_list
target_list.remove(max(target_list))
second_largest = max(target_list2)
print('The largest and second largest elements in the list' ' ' str(target_list) ' ' 'are' ' ' str(largest) ' ' 'and' ' ' str(second_largest))
在我的輸出代碼中,它與我應該得到的不匹配:
#TEST 1#
largest_two(sample1) returned None
inputs:
outputs:
#TEST 1#
largest_two(sample1) returned None
inputs:
outputs:
** ERROR ** The largest and second largest elements in the list [67, 61, 46, 40, 81, 64, 15] are 93 and 81
* EXPECTED * The largest and second largest elements in the list [67, 61, 46, 40, 81, 64, 15, 93] are 93 and 81
uj5u.com熱心網友回復:
IIUC 您可以執行以下操作(根據要求使用淺拷貝):
def largest_two(target_list):
target_list_ = target_list[:] # shallow copy of input list
largest = max(target_list_)
target_list_.remove(largest)
second_largest = max(target_list_)
print('The largest and second largest elements in the list' ' ' str(target_list) ' ' 'are' ' ' str(largest) ' ' 'and' ' ' str(second_largest))
largest_two([67, 61, 46, 40, 81, 64, 15, 93])
# Output: The largest and second largest elements in the list [67, 61, 46, 40, 81, 64, 15, 93] are 93 and 81
???
uj5u.com熱心網友回復:
如果您只分配變數,那么這只會制作該值的淺拷貝。使用pythondeepcopy函式。
代碼
from copy import deepcopy
def largest_two(target_list):
copy_list = deepcopy(target_list)
largest = max(target_list)
target_list2 = target_list
target_list.remove(max(target_list))
second_largest = max(target_list2)
print('The largest and second largest elements in the list' ' ' str(copy_list)
' ' 'are' ' ' str(largest) ' ' 'and' ' ' str(second_largest))
largest_two([67, 61, 46, 40, 81, 64, 15, 93])
# output :- The largest and second largest elements in the list [67, 61, 46, 40, 81, 64, 15, 93] are 93 and 81
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452133.html
上一篇:無法將地圖轉換為物件串列:飛鏢
