📜  Python| N个连续的奇数或偶数

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

Python| N个连续的奇数或偶数

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

方法 #1:使用sum() + 列表理解 + zip() + any()

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

# Python3 code to demonstrate
# N consecutive Odd or Even Numbers
# using sum() + zip() + any() + list comprehension
  
# initializing list
test_list = [1, 5, 6, 4, 8]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing N 
N = 3
  
# using sum() + zip() + any() + list comprehension
# N consecutive Odd or Even Numbers
temp = ( test_list[i : i + N] for i in range(len(test_list) - N + 1) )
res = any( sum(ele % 2 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]
Does list contain the desired consecution : True

方法 #2:使用groupby() + any()

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

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