Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在列表切片中插入重复值_Python - Fatal编程技术网

Python 在列表切片中插入重复值

Python 在列表切片中插入重复值,python,Python,我有一张布尔人的名单。我还有一个开始和结束索引列表。在我的布尔值列表中,我希望每个值都是True,除非它位于索引列表中定义的一个切片中。我写的东西感觉很笨重,有什么好的建议吗 bools = [True] * 15 events = [(3, 5), (11, 16)] for e in events: bools[e[0]:e[1]] = [False for x in range(*e)] 具体来说,我不喜欢[False for x in range(*e)]部分。如果我开始摆弄

我有一张布尔人的名单。我还有一个开始和结束索引列表。在我的布尔值列表中,我希望每个值都是
True
,除非它位于索引列表中定义的一个切片中。我写的东西感觉很笨重,有什么好的建议吗

bools = [True] * 15
events = [(3, 5), (11, 16)]
for e in events:
    bools[e[0]:e[1]] = [False for x in range(*e)] 
具体来说,我不喜欢
[False for x in range(*e)]
部分。如果我开始摆弄切片,则
范围(*e)
开始变得混乱,例如:

    bools[e[0]:e[1]+2] = [False for x in range(e[0], e[1]+2)]
如果有一种语法可以让列表/切片中的每个值都取相同的值,那就更好了

    bools[e[0]:e[1]+2] = False

但这显然不是正确的语法。有什么想法吗?

对使用numpy感兴趣吗

bools[e[0]:e[1]+2] = False
在努比工作。你也可以直接创建你自己的,这样你就可以做这样的事情

slices = [np.s_[3:6], np.s_[11:17]]
for s in slices:
    bools[s] = False
使用s_完全支持切片语法(步长、从列表末尾索引、省略号),而不仅仅是枚举一个范围,我只想这样做:

events = [(3, 5), (11, 16)]
bools = [True] * 16
for start, end in events:
    for index in range(start, end):
        bools[index] = False

当然,这只有在避免负指数的情况下才有效。但是,通过创建一个
切片(e[0],e[1])
并调用它的
索引(bools)
,然后用它代替
e[0]:e[1]
,即使这样也很容易修复。
from itertools import repeat
for e in events:
    bools[e[0]: e[1]] = repeat(False, e[1] - e[0])