在列表上迭代时,一旦满足条件,我如何用数字填充剩余部分?



我有一个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)) 

相关内容

  • 没有找到相关文章

最新更新