因此,我尝试通过实践解决此python问题,即必须从列表中的5个整数中找到最小和最大4个整数的和。我的逻辑似乎很好,因为它适用于max数组,但我不知道为什么在min数组上工作会有问题。
代码
arr=list(map(int, input().split()))
def miniMaxSum(arr):
maxarr=arr
minarr=arr
minsum=0
maxsum=0
for i in range(4):
maxsum+=max(maxarr)
maxarr.remove(max(maxarr))
minsum+=min(minarr)
minarr.remove(min(minarr))
print(minsum,maxsum)
miniMaxSum(arr)
输入
10 2 5 8 3
预期输出*
18 26
但这给了我这个错误
<ipython-input-1-2cb97cb38fd0> in miniMaxSum(arr)
9 maxsum+=max(maxarr)
10 maxarr.remove(max(maxarr))
---> 11 minsum+=min(minarr)
12 minarr.remove(min(minarr))
13 print(minsum,maxsum)
ValueError: min() arg is an empty sequence
答案 0 :(得分:1)
当您将不可变对象(例如列表)传递给函数时,实际上是通过引用传递它。通过在删除前后打印出docs_view = DocsView(
static_folder=os.path.abspath("plugins/docs/build/html"),
static_url_path="/",
category="My Documentation",
name="Plugins",
endpoint="my_docs"
)
,您可以轻松地看到这一点:
minarr
要解决此问题,您可以创建列表的副本:
def miniMaxSum(arr):
maxarr=arr
minarr=arr
minsum=0
maxsum=0
for i in range(4):
print(i)
print(minarr)
maxsum+=max(maxarr)
maxarr.remove(max(maxarr))
print(minarr)
minsum+=min(minarr)
minarr.remove(min(minarr))
print(minsum,maxsum)
也...只是一个建议...如果您计算整个列表的总和maxarr=arr.copy()
minarr=arr.copy()
,会容易得多。然后您可以设置
s