假设我有一个列表
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
发送帮助...在此先感谢
答案 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]