如何执行列表中值的逐步增加?

时间:2019-04-15 20:58:19

标签: python python-3.x

假设我有一个列表

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我想将每第3个数字增加5,以得出

A = [1, 2, 8, 4, 5, 11, 7, 8, 14, 10]

我的直觉告诉我一些事情

A[::3] = [x + 5 for x in A]

使用下面的循环或以某种方式集成替换

for num in range(0, len(A), 3):
    A = num + 5

发送帮助...在此先感谢

3 个答案:

答案 0 :(得分:1)

您几乎是第一次尝试就拥有了它。

根据您的示例将切片修改为从第3个元素(索引2)开始,并确保读取与要写入的切片相同的切片:

A[2::3] = [x+5 for x in A[2::3]]

答案 1 :(得分:0)

我认为这会做到

A=[x+5 if i%3==0 else x for i,x in enumerate(A,1)]

答案 2 :(得分:0)

您可以为此创建一个函数,该函数可以解释重复值或未排序值。如果我的假设不正确,则可以轻松调整函数以使值正确。

A = [1, 2, 3, 4, 5, 6, 10, 8, 9, 7]

def list_modifier(passed_list):

    passed_list.sort()

    mod_list = list(set(passed_list))

    out_list = {i:i if (mod_list.index(i)+1)%3 != 0 else (i+5) for i in mod_list }

    passed_list = [out_list[i] for i in out_list]

    return passed_list

list_modifier(A)

返回的列表如下: [1、2、8、4、5、11、7、8、14、10]