2024-04-19 14:53:50 发布
网友
我想用列表理解为我的特定列表索引添加5个
输入
arr=[0,0,0,0,0]
输出
我试过了
[arr[i]+=5 for i in range(2,4)]
但它给出了一个错误。在
不要对副作用使用列表理解。列表比较的目的是创建一个新列表。为此,我相信您可以在这里使用enumerate+range
enumerate
range
l, u = 2, 4 arr = [x + 5 if i in range(l, u + 1) else x for i, x in enumerate(arr)] print(arr) [0, 0, 5, 5, 5]
在python3中,这应该非常有效,因为对range对象的in检查是O(1)时间。在python2上,执行布尔检查会更快(这就是python3中in检查range所做的)——
in
O(1)
但是,请记住,for循环是这里使用的最有效的方法。在
for
for i in range(l, u + 1): arr[i] += 5 print(arr) [0, 0, 5, 5, 5]
因为
list
也可以通过在此处切片来使用添加列表:
arr[0:2] + [i+5 for i in arr[2:5]] [0, 0, 5, 5, 5]
也可以尝试不使用for循环,如下所示:
list_1=[0,0,0,0,0] b=list(range(2,5)) list(map(lambda x,y:list_1.__setitem__(x,list_1[x]+5),b,list_1)) print(list_1)
输出:
不要对副作用使用列表理解。列表比较的目的是创建一个新列表。为此,我相信您可以在这里使用
enumerate
+range
在python3中,这应该非常有效,因为对
^{pr2}$range
对象的in
检查是O(1)
时间。在python2上,执行布尔检查会更快(这就是python3中in
检查range
所做的)——但是,请记住,
for
循环是这里使用的最有效的方法。在因为
list
也可以通过在此处切片来使用添加列表:
也可以尝试不使用for循环,如下所示:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐