优化代码# 输入商品名称、价格和成本,存放到三个列表中names = input().split()prices = list(map(float, input().split()))costs = list(map(float, input().split()))# 计算每个商品的利润,并找到利润最大的商品max_profit = 0max_profit_name = ""for name, price, cost in zip(names, prices, costs): profit = price - cost if profit > max_profit: max_profit = profit max_profit_name = name# 输出利润最大的商品及其利润print(max_profit_name, max_profit)
时间: 2024-01-11 19:03:22 浏览: 285
以下是代码的优化建议:
1. 使用列表解析式或生成器表达式代替显式的 for 循环
列表解析式或生成器表达式可以帮助我们更简洁地生成列表或迭代器,从而减少代码量和运行时间。
例如,我们可以将原来的 for 循环:
```python
profits = []
for name, price, cost in zip(names, prices, costs):
profits.append(price - cost)
```
改写成列表解析式:
```python
profits = [price - cost for price, cost in zip(prices, costs)]
```
2. 使用内置函数 max() 和 enumerate() 代替手动查找最大值和索引
Python 的内置函数 max() 可以返回一个列表中的最大值,而 enumerate() 可以同时返回列表元素和它们的索引。
因此,我们可以将原来的代码:
```python
max_profit = 0
max_profit_name = ""
for name, price, cost in zip(names, prices, costs):
profit = price - cost
if profit > max_profit:
max_profit = profit
max_profit_name = name
```
改写成:
```python
profits = [price - cost for price, cost in zip(prices, costs)]
max_profit_index, max_profit = max(enumerate(profits), key=lambda x: x[1])
max_profit_name = names[max_profit_index]
```
其中,max() 函数的 key 参数指定了一个函数,用来对列表元素进行比较,这里我们使用 lambda 表达式返回每个元素的第二个值(即利润)。
3. 使用 zip() 函数来简化代码
我们可以将原本分别存储商品名称、价格和成本的三个列表,合并为一个包含元组的列表,即每个元组包含一个名称、价格和成本。
这样,我们就可以将代码:
```python
names = input().split()
prices = list(map(float, input().split()))
costs = list(map(float, input().split()))
for name, price, cost in zip(names, prices, costs):
# ...
```
改写成:
```python
items = [(name, float(price), float(cost)) for name, price, cost in zip(input().split(), input().split(), input().split())]
for name, price, cost in items:
# ...
```
这样可以减少代码量,并且更加清晰明了。
综上所述,优化后的代码如下:
```python
items = [(name, float(price), float(cost)) for name, price, cost in zip(input().split(), input().split(), input().split())]
profits = [price - cost for name, price, cost in items]
max_profit_index, max_profit = max(enumerate(profits), key=lambda x: x[1])
max_profit_name = items[max_profit_index][0]
print(max_profit_name, max_profit)
```
阅读全文