Python - 保留所有 K 元素行
有时,在使用Python列表时,我们可能会遇到一个问题,即我们需要保留只有 K 作为元素的行。这种应用可以发生在以矩阵为输入的数据域中。让我们讨论可以执行此任务的某些方式。
Input : test_list = [[7, 6], [4, 4], [1, 2], [4]], K = 4
Output : [[4, 4], [4]]
Input : test_list = [[7, 6], [7, 4], [1, 2], [9]], K = 4
Output : []
方法 #1:使用列表理解 + any()
上述功能的组合提供了一种可以执行此任务的方式。在此,我们使用 any() 执行过滤掉具有除 K 以外的任何元素的行的任务。
# Python3 code to demonstrate working of
# Retain all K elements Rows
# Using list comprehension + any()
# initializing list
test_list = [[2, 4, 6], [2, 2, 2], [2, 3], [2, 2]]
# printing original list
print("The original list : " + str(test_list))
# initializing K
K = 2
# Retain all K elements Rows
# Using list comprehension + any()
res = [ele for ele in test_list if not any(el != K for el in ele)]
# printing result
print("Matrix after filtering : " + str(res))
输出 :
The original list : [[2, 4, 6], [2, 2, 2], [2, 3], [2, 2]]
Matrix after filtering : [[2, 2, 2], [2, 2]]
方法 #2:使用列表理解 + all()
上述功能的组合可以用来解决这个问题。在此,我们使用 all() 检查行的所有元素是否等于 K。
# Python3 code to demonstrate working of
# Retain all K elements Rows
# Using list comprehension + all()
# initializing list
test_list = [[2, 4, 6], [2, 2, 2], [2, 3], [2, 2]]
# printing original list
print("The original list : " + str(test_list))
# initializing K
K = 2
# Retain all K elements Rows
# Using list comprehension + all()
res = [ele for ele in test_list if all(el == K for el in ele)]
# printing result
print("Matrix after filtering : " + str(res))
输出 :
The original list : [[2, 4, 6], [2, 2, 2], [2, 3], [2, 2]]
Matrix after filtering : [[2, 2, 2], [2, 2]]