📌  相关文章
📜  Python|在每 N 个值之后拆分 K 个元素

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

Python|在每 N 个值之后拆分 K 个元素

简单的列表切片有很多应用,随之而来的是列表拆分的许多变体,可以来找我们解决。一个这样的问题可以是在每 N 个值之后拆分 K 个元素。让我们讨论解决这个特定问题的方法。

方法#1:使用循环
这是在循环的帮助下解决这个特殊问题的朴素和蛮力方法,我们可以形成一个新列表来检查每 N 个元素之后出现的 K 个元素。

# Python3 code to demonstrate
# Getting K elements after N values
# using loops
  
# initializing list
test_list = [4, 5, 2, 7, 8, 4, 10, 9, 11, 13]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N and K
N = 2
K = 3
  
# using loops
# Getting K elements after N values
res =[]
while test_list:
    res += test_list[:K]
    test_list = test_list[K + N:]
  
# print result
print("The list after selective slicing : " + str(res))
输出 :
The original list : [4, 5, 2, 7, 8, 4, 10, 9, 11, 13]
The list after selective slicing : [4, 5, 2, 4, 10, 9]

方法#2:使用列表推导
可以使用上述方法的简化方式使用列表推导来执行此特定任务,我们还在此方法中使用列表切片来执行必要的切片。

# Python3 code to demonstrate
# Getting K elements after N values
# using list comprehension
  
# initializing list
test_list = [4, 5, 2, 7, 8, 4, 10, 9, 11, 13]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N and K
N = 2
K = 3
  
# using list comprehension
# Getting K elements after N values
res = [y for x in [test_list[i : i + K] for i in 
       range(0, len(test_list), N + K)] for y in x] 
  
# print result
print("The list after selective slicing : " + str(res))
输出 :
The original list : [4, 5, 2, 7, 8, 4, 10, 9, 11, 13]
The list after selective slicing : [4, 5, 2, 4, 10, 9]