📜  Python| K系列可分元素

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

Python| K系列可分元素

本文关注的问题非常具体,在不同领域可能不太有用。但是,这将解决的方式可能会为解决潜在的类似问题打开大门,因此值得一读。本文解决了测试一个列表是否包含一系列可整除的 K 的问题。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用sum() + list comprehension + zip() + any()
使用上述功能的组合可以解决此问题。该方法分两步解决问题。在第一步中,我们使用列表理解和 zip函数计算所有可能的 N 对,在第二步中,我们使用 sum 和任何函数来测试 N 可分结果,如果我们找到其中任何一个,我们返回正数。

# Python3 code to demonstrate
# Series K divisible elements
# using sum() + zip() + any() + list comprehension
  
# initializing list
test_list = [1, 5, 6, 4, 8, 12]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N 
N = 3
  
# initializing K 
K = 4
  
# using sum() + zip() + any() + list comprehension
# Series K divisible elements
temp = ( test_list[i : i + N] for i in range(len(test_list) - N + 1) )
res = any( sum(ele % K for ele in temps) % N == 0 for temps in temp )
  
# print result
print("Does list contain the desired consecution : " + str(res))
输出 :
The original list : [1, 5, 6, 4, 8, 12]
Does list contain the desired consecution : True

方法 #2:使用groupby() + any()
在上述方法中执行第一步的整个逻辑可以使用我们执行分组的 groupby函数来管理,以后可以使用任何函数来检查连续性。

# Python3 code to demonstrate
# Series K divisible elements
# using groupby() + any()
from itertools import groupby
  
# initializing list
test_list = [1, 5, 6, 4, 8, 12]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N 
N = 3
  
# initializing K 
K = 4
  
# using groupby() + any()
# Series K divisible elements
res = any(len(list(sub)) == N for idx, sub in groupby([sub % K for sub in test_list]))
  
# print result
print("Does list contain the desired consecution : " + str(res))
输出 :
The original list : [1, 5, 6, 4, 8, 12]
Does list contain the desired consecution : True