我有兩個清單
- 任務=[1,1,1,1,2,2,3,4,5,5]
- 小時=[1,7,6,2,3,6,5,2,4,6]
-.我想要求用戶輸入一個 1 到 5 之間的數字,然后在串列任務中查看用戶對 similler 值的輸入(如果用戶輸入 1,那么我需要列印小時串列中前四個索引的最大值(因為數字 1)在串列任務中有 4 個索引))所以輸出將是“任務編號(輸入)可以在(最多前四個索引小時)小時內完成)
uj5u.com熱心網友回復:
您可以使用zip回圈對,并在任務編號與輸入的內容相匹配的情況下占用最多的任務小時數。
task = [1,1,1,1,2,2,3,4,5,5]
hours = [1,7,6,2,3,6,5,2,4,6]
num = int(input('Which task number?'))
print(max(h for n,h in zip(task, hours) if n == num))
uj5u.com熱心網友回復:
使用不同型別的容器,字典更合適。以下是從您的格式轉換的方法:
from collections import defaultdict
d = defaultdict(list)
for k,v in zip(task,hours):
d[k].append(v)
輸出:
>>> dict(d)
{1: [1, 7, 6, 2], 2: [3, 6], 3: [5], 4: [2], 5: [4, 6]}
然后你可以選擇任務并獲得最大值:
n = 1
max(d[n])
輸出: 7
uj5u.com熱心網友回復:
你也可以用numpy它來做。
i = int(input("Pick a valid number between 1 and 5: "))
arr = np.array([task, hours])
max_hours_of_task_i = arr[1,arr[0]==i].max()
uj5u.com熱心網友回復:
n = int(input("Pick a valid number between 1 and 5: "))
result = max(hours[:len(task) - 1 - task.index(n)])
print("Task number {0} can be completed in {1} hours".format(n, result))
所有這些都是獲取用戶的輸入,然后在 中找到數字的最后一個索引task,然后從 中獲取前n 個元素的最大值hours。最后,它列印格式化的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/368262.html
上一篇:如何在Python中永久更改串列
