Yorgunluğa veya istenen kullanıcı limitine ulaşılana kadar yürütmek isteyen bir döngü var. Kötü görünen bir yapım var ama bunu ifade etmenin daha zarif bir yolunu bulamıyorum; orada var mıKoşullu olarak sınırlanmış döngüyü ifade etmek için daha pythonik bir yol?
def ello_bruce(limit=None):
for i in xrange(10**5):
if predicate(i):
if not limit is None:
limit -= 1
if limit <= 0:
break
def predicate(i):
# lengthy computation
return True
Kutsal yuvalama! Daha iyi bir yolu olmalı. Bir çalışma örneğinin amaçları için, xrange
, normalde sonlu ancak bilinmeyen uzunluktaki yineleyiciye sahip olduğum (ve bazen yüklemeyi yanlış olarak döndüren) olarak kullanılır.
En azından sınırın Döngüden Önce Olup Olmadığını kontrol edebilir ve eğer doğruysa, herhangi bir zamanda doğruyu kontrol etmek yerine geri dönebilirsiniz. Bu gerçekten daha fazla pythonik yapmaz, ancak döngüde çok fazla gereksiz hesaplamalar kaydedebilir. –
Gerçek eylemi buraya koymayı unuttu, fakat limit bekliyorum = Yok "sınır yok" anlamına geliyor, "bir şey yapma" değil. –
Burada yapabileceğiniz en basit temizlemenin, durumu tersine çevirdiğini unutmayın: 'eğer (i): devam etmiyorsanız, bloğun kalan kısmını ek bir yuvalama seviyesine yerleştirmekten kaçınılır. Bu çok fazla kod için geçerlidir, bu yüzden genel olarak öğrenmek iyi bir şeydir. –