📜  Python – 删除连续的 K 元素记录

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

Python – 删除连续的 K 元素记录

有时,在处理Python记录时,我们可能会遇到一个问题,即我们需要根据元组中连续 K 个元素的存在来删除记录。这种问题很特殊,但可以在数据域中应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用zip() + 列表理解
上述功能的组合可以用来解决这个问题。在这种情况下,我们需要使用 zip() 组合两个连续的段并在列表理解中执行比较。

# Python3 code to demonstrate working of 
# Remove Consecutive K element records
# Using zip() + list comprehension
  
# initializing list
test_list = [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 6
  
# Remove Consecutive K element records
# Using zip() + list comprehension
res = [idx for idx in test_list if (K, K) not in zip(idx, idx[1:])]
  
# printing result 
print("The records after removal : " + str(res)) 
输出 :
The original list is : [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)]
The records after removal : [(4, 5, 6, 3), (1, 3, 5, 6)]

方法 #2:使用any() + 列表推导
上述功能的组合可以用来解决这个问题。在此,我们使用 any() 检查连续元素,并使用列表推导来重新制作列表。

# Python3 code to demonstrate working of 
# Remove Consecutive K element records
# Using any() + list comprehension
  
# initializing list
test_list = [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 6
  
# Remove Consecutive K element records
# Using any() + list comprehension
res = [idx for idx in test_list if not any(idx[j] == K and idx[j + 1] == K for j in range(len(idx) - 1))]
  
# printing result 
print("The records after removal : " + str(res)) 
输出 :
The original list is : [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)]
The records after removal : [(4, 5, 6, 3), (1, 3, 5, 6)]