python - 如何确定列表是否包含彼此相邻的 3 个偶数或 3 个奇数?
问题描述
您如何确定一个列表是否包含 3 个相邻的偶数或 3 个奇数?
示例列表(真、假、真):
[2, 1, 3, 5]
[2, 1, 2, 5]
[2, 4, 2, 5]
最近的代码:
evenOdd = []
while True:
try:
n = int(input())
evenOdd.append(n)
except:
break
for x in evenOdd:
if x % 2 == 0:
print("True")
解决方案
这是一些代码。这被认为比迭代索引更“pythonic” - 这使用zip
函数迭代连续三元组。如果列表少于三个项目,这将给出错误 - 您可以添加该错误检查。当其中一个可迭代对象的值用完时,该zip
函数停止,这正是我们在这里想要的。
def three_evens_or_odds(alist):
for a, b, c in zip(alist, alist[1:], alist[2:]):
if (((a & 1) and (b & 1) and (c & 1)) or
((a & 1 == 0) and (b & 1 == 0) and (c & 1 == 0))):
return True
return False
print(three_evens_or_odds([2, 1, 3, 5]))
print(three_evens_or_odds([2, 1, 2, 5]))
print(three_evens_or_odds([2, 4, 2, 5]))
或者,甚至更短(从@jdehesa 借用一个我应该自己想到的想法,所以像我一样支持他的回答),
def three_evens_or_odds(alist):
for a, b, c in zip(alist, alist[1:], alist[2:]):
if a & 1 == b & 1 == c & 1:
return True
return False
print(three_evens_or_odds([2, 1, 3, 5]))
print(three_evens_or_odds([2, 1, 2, 5]))
print(three_evens_or_odds([2, 4, 2, 5]))
打印输出是
True
False
True
推荐阅读
- python - 坐标列表列表
- docker - 无法从 WSL 连接到 docker
- django - 如何获取托管在保管箱中的图像的 url,以在调试模式下使用它(django)
- python - 匹配带方括号的字符串
- python - Flask(运行 REST 服务器)与 OpenCV 在 Ubuntu 上读取网络摄像头发生冲突
- ms-access - IIf 查询小数去除
- java - 用于容器化 postgressql 的 Spring Boot 的正确 jdbc 是什么
- javascript - 光滑的滑块显示溢出,隐藏幻灯片
- r - 为什么装袋树的错误率远高于单棵树的错误率?
- javascript - 如何获取传单图层组 ID?