📜  Python|列表中第 i 个索引大小的子组

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

Python|列表中第 i 个索引大小的子组

有时我们需要对元素进行分组,分组技术和要求也会相应变化。对元素进行分组的一种方法是按列表中的第 i 个大小,它将索引键的字典存储为后续大小为 i 的列表元素。

让我们讨论一些可以做到这一点的方法。

方法 #1:使用islice() + 字典理解
slice 方法可用于将需要制作的列表块分组为字典的值,然后使用字典推导将其分配给它们的目标索引键。

# Python3 code to demonstrate
# Subgrouping of i'th index size in list
# using islice() + dictionary comprehension
from itertools import islice
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using islice() + dictionary comprehension
# Subgrouping of i'th index size in list
temp = iter(test_list)
res = {key: val for key, val in ((i, list(islice(temp, i)))
                for i in range(1, len(test_list))) if val}
  
# printing result
print("The grouped dictionary is : " + str(res))
输出 :

方法 #2:使用itemgetter() + takewhile() + islice()
为了提高计算速度,我们引入了新的函数来执行这个特定的任务,takewhile 和 itemgetter 函数执行对切片值进行分组的任务。

# Python3 code to demonstrate
# Subgrouping of i'th index size in list
# using itemgetter() + takewhile() + islice()
from itertools import islice, takewhile
from operator import itemgetter
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using itemgetter() + takewhile() + islice()
# Subgrouping of i'th index size in list
temp = iter(test_list)
res =  {key: val for key, val in 
        takewhile(itemgetter(1), ((i, list(islice(temp, i)))
        for i in range(1, len(test_list))))}
  
# printing result
print("The grouped dictionary is : " + str(res))
输出 :