Skip to main content
 首页 » 编程设计

Python非线性切片

2025年05月04日14Leo_wl

给定一个列表 a,我可以通过以下方式对其进行切片:

a[start:end:step] 

然而,这只是线性切片。 例如,我想选择 2 的幂的索引。 不幸的是,这不起作用:

a[slice(2**x for x in range(len(a))] 

当需要非线性切片时,有没有办法避免循环?

编辑: 主要是我需要这个来修改列表。例如

a[*non-linear-slicing*] = [*list-with-new-values*] 

请您参考如下方法:

你可以使用列表理解:

is_power_of_two = lambda num: num != 0 and ((num & (num - 1)) == 0) 
print [item for i, item in enumerate(a) if is_power_of_two(i)]