📜  Python|列表中的增量切片分区

📅  最后修改于: 2022-05-13 01:55:09.584000             🧑  作者: Mango

Python|列表中的增量切片分区

有时,在处理列表时,我们可能会遇到需要对列表进行增量切片的问题,即每切片,元素的数量会增加 1。这在竞争性编程中具有应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用循环
这是可以执行此任务的蛮力方法。我们只是手动计数并在每次迭代中增加计数器以进行切片和字典键创建。

# Python3 code to demonstrate working of
# Incremental slice partition in list
# Using loop
  
# initializing list
test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Incremental slice partition in list
# Using loop
res = {}
N = 1
strt = 0
while strt < len(test_list):
    res[N] = test_list[strt : strt + N]
    strt += N
    N += 1
  
# printing result 
print("The partitioned dictionary from list is : " + str(res))
输出 :

方法 #2:使用enumerate() + slice() + next() + iter() + count()
上述功能的组合可用于执行此任务。在此, next()用于迭代由iter()转换为迭代器的列表。 slice()执行列表切片。 count() 有助于管理计数器并枚举跟踪列表中的元素和索引。

# Python3 code to demonstrate working of
# Incremental slice partition in list
# Using enumerate() + slice() + next() + iter() + count()
from itertools import islice, count
  
# initializing list
test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Incremental slice partition in list
# Using enumerate() + slice() + next() + iter() + count()
res = {key : val for key, val in enumerate(iter(lambda i = iter(test_list),
                          c = count(1): list(islice(i, next(c))), []), 1)}
  
# printing result 
print("The partitioned dictionary from list is : " + str(res))
输出 :