Skip to main content
 首页 » 编程设计

Python 列表切片

2025年05月04日26lhb25

我无法理解这里要做什么。有人可以帮忙吗。

我有几个 list :

array = [7,8,2,3,4,10,5,6,7,10,8,9,10,4,5,12,13,14,1,2,15,16,17] 
slice = [2, 4, 6, 8, 10, 12, 15, 17, 20, 22] 
intervals = [12, 17, 22] 
output = [] 
intermediate = [] 

slice 是我需要从切片 array 中获取的索引列表。 interval 是一个索引列表,用于在 slice[i] 为 interval[j] 时停止切片,其中 i 和 j 是循环变量。 我需要根据 slice 和 intervals 的 array 形成列表列表,条件是 slice[i] 是不是区间[j]

intermediate =intermediate + array[slice[i]:slice[i+1]+1] 

以我为例:

当 slice[i] 和 interval[j] 等于值 12 时。所以我需要从 array

intermediate = array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1] 

这是

intermediate  = array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]   

并且当 slice[i] 是 interval[j] output = output + intermediate 并且继续切片。

output = output + [intermediate] 

这是

output = output + [array[2:(4+1)] + array[6:(8+1)] + array[10:(12+1)]] 

现在间隔中的下一个值是 17 所以直到我们在 slice 中有 17 我们从 array[slice[6]:slice[6+1]+1] 并将其添加到输出中。这还在继续。

最终输出应该是:

output = [array[slice[0]:slice[0+1]+1] + array[slice[2]:slice[2+1]+1] + array[slice[4]:slice[4+1]+1] , array[slice[6]:slice[6+1]+1], array[slice[8]:slice[8+1]+1]] 

这是

output = [[2, 3, 4, 5, 6, 7, 8, 9, 10], [12, 13, 14], [15, 16, 17]] 

请您参考如下方法:

一个简单的解决方案:

array_ = [7,8,2,3,4,10,5,6,7,10,8,9,10,4,5,12,13,14,1,2,15,16,17] 
slice_ = [2, 4, 6, 8, 10, 12, 15, 17, 20, 22] 
intervals = [12, 17, 22] 
output = [] 
intermediate = [] 
 
for i in range(0, len(slice_), 2): 
    intermediate.extend(array_[slice_[i]:slice_[i+1]+1]) 
    if slice_[i+1] in intervals: 
        output.append(intermediate) 
        intermediate = [] 
 
print output 
# [[2, 3, 4, 5, 6, 7, 8, 9, 10], [12, 13, 14], [15, 16, 17]] 

我更改了一些变量名以避免冲突。 在大数据上,您可以将 intervals 转换为一个集合。