python - 给定一个整数列表,如果某处的某个 3 旁边有一个 3,则返回 3
问题描述
给定一个整数列表,如果该数组在某处的某个 3 旁边包含一个 3,则返回 True。
如果第一个索引处有 3(后跟 3),我的代码返回 true,但如果在任何其他索引处有 3(后跟 3),则返回 false。
我究竟做错了什么?
def myfunc(*args):
for i in args:
for x in range(len(args)):
if i[x]==i[x+1] and i[x]==3:
return True
else:
pass
else:
return False
解决方案
只有一行:
def myfunc(*args): return any([3, 3] == list(args[i:i+2]) for i in range(len(args)))
您实际上检查输入的任何连续子集中(由 slice 表示)中是否有两个连续3
的(由 list表示)[3, 3]
args[i:i+2]
推荐阅读
- python-3.x - 使用 pandas 读取 excel 文件时出错
- javascript - 如何将 og 标签添加到 expo 托管反应本机 Web 应用程序?
- php - 我想编辑记录然后使用 laravel 更新它
- unity3d - 从旁观者的角度看资产包不可见
- android - 禁用屏幕捕获并允许通过 Miracast 进行投射
- php - 二叉树获取所有左/右节点
- spring - 未找到表“BATCH_JOB_INSTANCE”:org.h2.jdbc.JdbcSQLException
- css - 除非添加溢出属性,否则无法更改导航栏颜色
- java - Android Load Full Image Recyclerview Cardview
- docker - 将 docker 映像中目录中存在的文件挂载到主机中的目录