Bunu Python'da yapmanın en iyi yolu nedir? For-döngüler
for (v = n/2 - 1; v >= 0; v--)
Aslında ilk Google'ı çalıştı, ancak bildiğim kadarıyla gördüğünüz gibi tek çözüm
while
kullanmak olacaktır.
Bunu Python'da yapmanın en iyi yolu nedir? For-döngüler
for (v = n/2 - 1; v >= 0; v--)
Aslında ilk Google'ı çalıştı, ancak bildiğim kadarıyla gördüğünüz gibi tek çözüm
while
kullanmak olacaktır.
bunu yapmanın yolu xrange()
ile geçerli:
for v in xrange(n // 2 - 1, -1, -1):
(Python 3.x Veya, range()
yerine xrange()
ile.) //
sonuç bir tam sayıdır emin olur döşeme bölümüdür .
for v in xrange(n/2 - 1, 0, -1):
#your code here
V ve n int
S veya int
s olarak işlemden geçirilir. Bu, bölünmenin bir tamsayı bölümü, yani 1/2 == 0 is True
olacağı anlamına gelir.
Not: Bu Python 2.x içindir.
-1: Bu bir çok az öğe var. Yanlış 0 'değerini atar. Ayrı bir şekilde, python3'te başarısız olur, çünkü n/2' bir float oluşturur ('TypeError: 'float' nesnesi bir tamsayı olarak yorumlanamaz '). Ama belki de bu yüzden python 2.x için olduğunu söylediniz. – hughdbrown
for v in range(n//2, -1, -1)
Ancak vakaların% 90'ında C/Java/C# bir for
döngü kullanmış ne zaman/VB, ne gerçekten istediğiniz list comprehension geçerli:
listOfStuff = [doSomethingWith(v) for v in range(n//2, -1, -1)]
-1: Çok fazla ürün var. Yanlış n '2 //' içerir. – hughdbrown
Bunu yapacağını :
for i in reversed(range(n // 2)):
# Your code
pass
Bu ters alt sınır ne dizisi, ve ne üst limiti, bu biraz daha açık.
veya "ters (xrange (…))", bu da çalışıyor. – tzot
+1 Bunu en iyi şekilde beğeniyorum –
@ ΤΖΩΤΖΙΟΥ: true, ancak bu düşünebileceğiniz bir faydası yok. 3.0 öncesi pitonlarda aralık() tüm verileri bir kerede çeker. xrange(), bir defada yalnızca bir öğe çekerek bir jeneratör gibi davranır. Ancak bir diziyi tersine çevirecekseniz, bir seferde tüm verilere ihtiyacınız vardır, bu yüzden tersine çevrilmiş (range()) ve tersine (xrange()) aynı şekilde çalışacaktır: her biri, daha önce çekilen tüm verilere sahip olacaklardır. ters çevrildi. – hughdbrown
hughdbrown'ın sürümü doğru yanıt olarak işaretlenmiş olmalıdır – rbp