python列表控制增量
发布时间:2020-12-20 13:50:47 所属栏目:Python 来源:网络整理
导读:我正在尝试增加像算盘一样的 python数字列表. list = [0,0]units = 4def m(list,units): for e in range(len(list)): if units: list[e] = list[e] + 1 units -= 1 这段代码工作正常,如果我运行m(列表,单位)列表将是[1,1,1] – 我试图解决的问题是当单位值是
我正在尝试增加像算盘一样的
python数字列表.
list = [0,0] units = 4 def m(list,units): for e in range(len(list)): if units: list[e] = list[e] + 1 units -= 1 这段代码工作正常,如果我运行m(列表,单位)列表将是[1,1,1] – 我试图解决的问题是当单位值是单位= 2时list会增加到[2,2,1](这也很好)问题是当我从一个不均匀的列表中运行m()函数时,列表将从list [0]增加到最终[3,3,1]而不是[2,2]. 是否有一种pythonic方式我可以让函数从最低值增加列表以实现均匀传播? 解决方法
为了从具有最小值的第一个元素开始,您可以将起始索引设置为starting_index = abacus.index(min(abacus)),如@jonrsharpe所示.
但是,您需要避免超出列表的末尾,例如,如果units = 4且starting_index = 3,那么您应该在除以len(abacus)之后取计算索引的剩余部分,即calculated_index%len(abacus) . 最后,我认为循环范围(单位)会更容易.这样你就不需要自己减少单位,并且可以同时处理比算盘长度更多的单位. 这是一个示例实现: 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] print abacus m(abacus,2) print abacus m(abacus,4) print abacus m(abacus,3) print abacus m(abacus,7) print abacus 结果如下: [0,0] [1,0] [2,1] [3,2] [3,3] [5,5,4] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |