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]