首页 > 解决方案 > 为什么Python中的for循环会输出3次列表?

问题描述

我是 Python 的初学者。我正在做一个练习,我必须对列表价格中的项目应用折扣并将结果存储在列表new_prices中。为什么输出重复三遍?有没有办法避免它并只获得一次输出?

先感谢您


prices = [2, 50, 70, 30]
new_prices =[]



for i in prices:
    prices[0] = 2 * 0.8
    prices[1] = 50 * 0.6
    prices[2] = 70 * 0.4
    prices[3] = 30 * 0.6
    new_prices.append(prices)


print(new_prices)


output: [[1.6, 30.0, 28.0, 18.0], [1.6, 30.0, 28.0, 18.0], [1.6, 30.0, 28.0, 18.0], [1.6, 30.0, 28.0, 18.0]]

expected output: [[1.6, 30.0, 28.0, 18.0]

标签: pythonfor-loopoutput

解决方案


问题的具体原因是您的for循环是不必要的,但看起来您真正想要做的是这样的事情,您有许多不同的比例因子可以乘以prices.

prices = [2, 50, 70, 30]

scale_factors = [0.8, 0.6, 0.4, 0.6]

new_prices = []
for price, scale_factor in zip(prices, scale_factors):
    new_prices.append(price * scale_factor)

print(new_prices)

请注意使用zip来从prices和中获取元素对scale_factors

你也可以这样写:

new_prices = [price * scale_factor     
              for price, scale_factor in zip(prices, scale_factors)]

推荐阅读