Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python列表控制增量_Python_List_Increment - Fatal编程技术网

python列表控制增量

python列表控制增量,python,list,increment,Python,List,Increment,我正在尝试像算盘一样增加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]——我试图解决的问题是,当units值类似于units=2时,列表将增加到[2,2,1,1](这同

我正在尝试像算盘一样增加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]——我试图解决的问题是,当units值类似于
units=2
时,列表将增加到[2,2,1,1](这同样很好),问题是当我从一个不均匀的列表运行
m()
函数时,列表将从列表[0]增加到[3,3,1,1],而不是[2,2,2,2]


是否有一种类似Python的方法可以让函数从最小值开始递增列表以实现均匀排列?

为了以最小值开始第一个元素,您可以将起始索引设置为@jornsharpe建议的
starting\u index=abacus.index(min(abacus))

但是,您需要避免超出列表的末尾,例如,如果
units=4
starting_index=3
,那么您应该在除以
len(abacus)
后取计算索引的剩余部分,即
计算索引%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,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]

你是说你想从
list.index(min(list))
(仅供参考,
list
不是一个好名字,因为它隐藏了内置的内容)?是的,乔恩-没错,我想从min索引开始-我只使用了“list”命名使问题更容易阅读---谢谢--有没有一个好的方法从列表中最低的索引开始?是的,有-拿着我提供的片段,找出插入的位置。啊,完美的乔恩——问题回答得很完美——知道该把它放在哪里——谢谢。我是新来的——我该如何将这个标记为已回答?这个解决方案太漂亮了,差点让我哭了。谢谢回答问题!——我的解决方案是用一堆可怕的if-else语句来决定索引何时开始——您的解决方案更为冗长和“pythonic”,再次感谢。这行代码很棒:
index=(raw\u index+start\u index)%len(abacus)
——非常优雅的语句。精彩的。