允许我将Numpy用于该任务。
我需要用两个列表显示一个月的总销售额:日期和销售额。
我的方法是通过去除日期中的月份,创建2D矩阵并添加检查每个月的值来列出一个月中所有销售额的列表。
import numpy as np
dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)
def monthlysales():
jan = []
for i in monthsales[0, 0:]:
if i == 1:
jan.append()
s = input("Pick month: ")
if s == "1":
print("Sales total for Jan is:", np.sum(jan), "USD")
else:
print("Not a valid month")
return
print(monthsales)
print(monthlysales())
问题是我不知道要追加什么内容,因此它占用了矩阵的第二行,这将完成代码
答案 0 :(得分:0)
解决方案保持逻辑:
我在这里循环搜索月份(与您一样,但是这里使用Autocomplete
),并查找月份等于1的时间。使用enumerate
可以让我们知道when的列号。月份等于1(enumerate
)。然后,只需在我们感兴趣的月份(id
)附加销售额(第1行)
id
当然,由于允许使用numpy,因此可以完全避免任何循环。考虑以下行:
import numpy as np
dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)
def monthlysales():
jan = []
# Loop over months with enumerate
for id, month in enumerate(monthsales[0]):
if month == 1:
# Append sales (row 1) at column id
jan.append(monthsales[1, id])
s = input("Pick month: ")
if s == "1":
print("Sales total for Jan is:", np.sum(jan), "USD")
else:
print("Not a valid month")
print(monthsales)
print(monthlysales())
这将一行中所有一月月份的销售额汇总起来。没有循环。对于任何合理的数据量,这将比使用monthsales[1, monthsales[0] == 1].sum()
的解决方案要快得多。
看起来更像您的最初解决方案,
enumerate