我有一個列表True
和False
,它被認爲是循環的(第一個元素在最後一個之後)。找到最接近的True
元素的索引,之前的哪個元素具有給定的索引?查找循環列表中的上一個匹配元素
這是我的解決方案。這是非常簡單的,但不是很Python的,因爲我認爲:
def prev_element(a, i):
i -= 1
while not a[i]:
i -= 1
return i % len(a)
這將提高IndexError
的情況下,不存在這樣的元素,這是確定我。我利用這樣一個事實,即一個列表可能會被索引爲負索引,這會導致列表循環。有更好的解決方案一些很酷的單線,也許?
我認爲你的解決方案非常好!出於教條的原因,不需要聰明,不僅僅是您的解決方案「應該」使用訪問者模式或抽象基類。 – Cuadue 2015-02-10 22:32:21
它起作用,它簡短而又甜美,簡單易讀 - 什麼是非pythonic? – wwii 2015-02-10 22:59:03
@Cuadue我是python的新手,這就是爲什麼我認爲可能有一些奇特的功能或者我甚至不知道的方法。現在,當我看到答案時,我確信我的解決方案至少不會比其他問題更糟糕。 – Mikhail 2015-02-11 07:59:34