函式名稱:avg_capacity 引數:product_list - 包含一系列產品描述作為字串的串列。
回傳:一個浮點數,表示串列中給定的容量平均值。
描述:給定一個產品描述串列,其中串列中的每個元素的格式為“product_id-capacity”,計算所有容量的平均值并回傳值。
讓我們假設您是一家銷售不同口罩的商店的所有者。這些口罩以特定容量的盒子裝運。每盒口罩都有一個唯一的產品 ID(沒有兩個 ID 相同),以及與盒子相關的容量。你想找到盒子的所有不同容量,并計算這些容量的平均值。
前任)
product_list = ['A1-10', 'B10-40', 'C403-50', 'D5-10'] 回傳:27.5
def avg_capacity(product_list):
for capacity in range(len(product_list)):
product_list[capacity] = product_list.split("-")
average = capacity["-":]
return average
print(avg_capacity(['C12-100', 'A10-400']))
老實說,我不知道如何處理這個問題。我被告知要使用字串方法,所以我嘗試使用 split 來拆分每個破折號實體的產品 ID。但是,我不知道如何操作串列以獲取破折號右側的數字,并將它們放入將取產品串列中每個產品 ID 的平均值的代碼。任何幫助表示贊賞:D
uj5u.com熱心網友回復:
def avg_capacity(product_list):
capacity_list = []
for capacity in product_list:
capacity_list.append(int(capacity.split("-")[1]))
return sum(capacity_list) / len(capacity_list)
print(avg_capacity(['C12-100', 'A10-400']))
uj5u.com熱心網友回復:
def avg_capacity(product_list: list[str]) -> float:
capacities = [int(x.split("-")[1]) for x in product_list]
return sum(capacities) / len(capacities)
uj5u.com熱心網友回復:
您的代碼存在許多問題:
- 你打電話給
product_list.split("-"),但是product_list是串列本身;您應該呼叫split各個元素,例如product_list[capacity]在您當前的代碼中 - ,
for capacity in range(...)容量是int,所以capacity["-":]不起作用;如果您想要 之后的部分"-",請獲取[1]之后的元素split("-") - 你永遠不會像平均所需的那樣對個人能力進行加總和除法
- 你
return在回圈的第一次迭代中;你可能想在回圈之后回傳(在解決其他問題之后)
你可以嘗試這樣的事情:
def avg_capacity(product_list):
total = 0
for mask in product_list:
name, cap = mask.split("-")
total = int(cap)
return total / len(product_list)
上面的回圈也可以使用以下方法壓縮成單行sum:
def avg_capacity(product_list):
return sum(int(mask.split("-")[1]) for mask in product_list) / len(product_list)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522494.html
標籤:Python列表方法
