📜  Python|保留K个连续元素

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

Python|保留K个连续元素

有时在处理数据时,我们可能会遇到需要选择一些连续出现 K 次的元素的问题。此问题可能发生在许多域中。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用groupby() + 列表理解
可以使用上述功能执行此任务。在此,我们将所有连续出现的数字 K 分组。我们使用列表推导来迭代列表。

# Python3 code to demonstrate working of
# Retain K consecutive elements
# using groupby() + list comprehension
from itertools import groupby
  
# initialize list 
test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]
  
# printing original list 
print("The original list : " + str(test_list))
  
# initialize K 
K = 2
  
# Retain K consecutive elements
# using groupby() + list comprehension
res = [i for i, j in groupby(test_list) if len(list(j)) == K]
  
# printing result
print("The K consecutive elements are : " + str(res))
输出 :
The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]

方法 #2:使用列表理解 + slice() + groupby()
也可以使用上述功能执行此任务。在这里,我们只是以与上面类似的方式执行分组,但我们提取连续元素的方式是通过 slice()。

# Python3 code to demonstrate working of
# Retain K consecutive elements
# using groupby() + list comprehension + islice()
from itertools import groupby, islice
  
# initialize list 
test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]
  
# printing original list 
print("The original list : " + str(test_list))
  
# initialize K 
K = 2
  
# Retain K consecutive elements
# using groupby() + list comprehension + islice()
res = [i for i, j in groupby(test_list) if len(list(islice(j, 0, K))) == K]
  
# printing result
print("The K consecutive elements are : " + str(res))
输出 :
The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]