我有一个array = [0, 0, 0, 0, 0, 0, 0, 0]
。
假设我想在满足某个条件后,用1填充数组的剩余部分
例如,
for i in range(len(array)):
i%2 == 0:
array[i:] = 1
上面的结果是:
TypeError:只能赋值可迭代对象。
我如何改变我的代码来实现上述目标?
(注::是否可以用列表推导式来做?)
预期输出:
array = [1,1,1,1,1,1,1,1]
您可以在插入点之前取部分的切片,并将该常量值与重复的列表连接起来(注意:您需要if
,并且您可能想要打破循环):
if <condition>:
array = array[:i] + [1]*(len(array)-i)
break
使用第二个循环并中断第一个循环
def fill(arr, val, start=0):
for i in range(start, len(arr)):
arr[i] = val
for i, _ in enumerate(array):
if i % 2 == 0:
fill(array, 1, i)
break
索引0是偶数,所以你最终会得到所有的1,所以就从
开始否则,给定一个0列表和一些条件,应该很容易找出该条件首先为真的位置。有了这个值,您可以将列表分成几个部分
array = ([0] * conditional_index) if conditional_index > 0 else [1]
assert expected_length > conditional_index
array.extend(1 for _ in range(expected_length - conditional_index + 1))