【发布时间】:2021-05-29 09:26:17
【问题描述】:
我完全糊涂了!
我在下面有一个列表:
prices = [13, 11, 10, 8, 5]
我想编写代码来反转列表以创建 [5, 8, 10, 11, 13] 并从 5 中减去每个术语并将其附加到新列表中。
所以我想要的输出是:[-3, -5, -6, -8]
我使用 break 编写了下面的代码来测试一个循环:
def max_profit(prices):
###
### YOUR CODE HERE
prices_reversed = list(reversed(prices))
print (f'prices_reversed is: {prices_reversed}')
profit_amt_list = []
for i in range(len(prices_reversed)):
print (f'i is: {i}')
current_value = prices_reversed[i]
for j in range(i,len(prices_reversed)):
print (j)
if j+1 < len(prices_reversed):
print ('true')
next_value = prices_reversed[j+1]
# print (current_value, next_value)
profit_amt_list.append(current_value - next_value)
break
print (profit_amt_list)
###
max_profit(prices)
我的代码打印:
prices_reversed is: [5, 8, 10, 11, 13]
i is: 0
0
true
1
true
2
true
3
true
4
**[-3, -5, -6, -8, -8]**
对于我的一生,我不明白为什么我有两个 -8 值,而列表应该只包含一个。请帮我理解!
【问题讨论】:
-
你为什么不期望输出是
[0, -3, -5, -6, -8]?为什么应该跳过反向列表的第一项?其他明智的[x-5 for x in reversed(prices)]就足够了