我一直试图在列表中找到一个自引用循环.我像这样引用了这个列表:
a = [1, 2, None]
a[2] = a
Run Code Online (Sandbox Code Playgroud)
在python中检测这个循环的正确方法是什么?
我不确定是否有"正确"的方式,但is运营商是你的朋友.要检查列表是否包含自身:
any(x is a for x in a)
Run Code Online (Sandbox Code Playgroud)
要查找列表的索引:
next(i for i, x in enumerate(a) if x is a)
Run Code Online (Sandbox Code Playgroud)
这个版本就像a.index是因为如果找不到列表就会引发错误.要进行模拟a.find,请将默认值添加到next:
next(..., -1)
Run Code Online (Sandbox Code Playgroud)
你不能直接使用a.find或者a.index因为那些将通过相等来搜索,在这种情况下,它将在正匹配上无限递归.
在这种情况下,检查身份应该是相对万无一失的.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |