gpt4 book ai didi

python 列表控制增量

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:40 25 4
gpt4 key购买 nike

我正在尝试像算盘一样递增 python 数字列表。

list = [0,0,0,0]
units = 4

def m(list, units):
for e in range(len(list)):
if units:
list[e] = list[e] + 1
units -= 1

这段代码工作正常,因为如果我运行 m(list, units) 列表将是 [1,1,1,1] —— 我试图解决的问题是当单位值类似于 units = 2 列表将递增到 [2,2,1,1](同样没问题)问题是当我运行 m()function from ununeven list,列表将从列表 [0] 递增到 [3,3,1,1] 而不是 [2,2,2,2]。

有没有一种 pythonic 方法可以让函数从最低值开始递增列表以实现均匀分布?

最佳答案

为了从具有最小值的第一个元素开始,您可以将起始索引设置为 starting_index = abacus.index(min(abacus)) 正如@jonrsharpe 建议的那样。

但是,您需要避免超出列表的末尾,例如如果 units = 4starting_index = 3,那么您应该使用剩余的部分除以 len(abacus) 后的计算索引,即 calculated_index % len(abacus)

最后,我认为循环 range(units) 会更容易。这样您就不需要自己减少单位,并且可以一次处理比算盘长度更多的单位。

这是一个示例实现:

def m(abacus, units):
starting_index = abacus.index(min(abacus))
for raw_index in range(units):
index = (raw_index + starting_index) % len(abacus)
abacus[index] = abacus[index] + 1

并测试:

abacus = [0,0,0,0]    
print abacus
m(abacus, 2)
print abacus
m(abacus, 4)
print abacus
m(abacus, 3)
print abacus
m(abacus, 3)
print abacus
m(abacus, 7)
print abacus

结果:

[0, 0, 0, 0]
[1, 1, 0, 0]
[2, 2, 1, 1]
[3, 2, 2, 2]
[3, 3, 3, 3]
[5, 5, 5, 4]

关于python 列表控制增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com