替换并添加到python3中的数组切片

2024-06-08 21:08:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个数组切片,然后将切片的每个元素分配给一个数字,然后根据我提供的索引进行更新。你知道吗

例如:

[0, 0, 0, 0, 0] --> initial array

我想给前两个元素赋值100,即

a[0:2] = 100 for j in range(0,2)

所以现在数组变成

[100, 100, 0, 0, 0]

现在如果我想在前三个元素上加100,那么数组现在应该变成

[200, 200, 100, 0, 0]

正确的方法是什么?以下代码出现语法错误:

def arrayManipulation(n, queries):
n = 10
//queries is list of [[starting index, ending index, value to be updated]]
initialArray = [0]*n;
for i in queries:
    firstIndex = i[0]-1
    secondIndex = i[1]
    initialArray[firstIndex:secondIndex] = ((initialArray[j] += i[2]) for j in range(firstIndex, secondIndex))
    print(initialArray)

Tags: in元素forindex切片range数字数组
2条回答

常用的方法是使用range和循环。你知道吗

a = [0, 0, 0, 0]

for i in range(2):
    a[i] = 100

for i in range(3):
    a[i] += 100

print(a) # [200, 200, 100, 0]

不过,很高兴知道Python支持片分配。你知道吗

a = [0, 0, 0, 0]

a[0:2] = [100, 100]

# To some extent, this even can be done
a[0:3] = map(lambda x: x + 100, a[0:3])

print(a) # [200, 200, 100, 0]

在这里使用enumerate它可以让您访问感兴趣的index,并赋值或操作它们

l = [0, 0, 0, 0, 0]

for idx, item in enumerate(l[:2]):
    l[idx] = 100

for idx, item in enumerate(l[:3]):
    l[idx] += 100

print(l)

*注意:初始任务可以通过(@ShadowRanger)完成

l[:2] = [100] * 2

相关问题 更多 >