Ben 100'den 0'a döngü çalışıyorum. Python bunu nasıl yapabilirim?
for i in range (100,0) çalışmıyor.
range(100)[::-1](otomatik olarak çevrilir range(9, -1, -1)) - Python
Ben 100'den 0'a döngü çalışıyorum. Python bunu nasıl yapabilirim?
for i in range (100,0) çalışmıyor.
range(100)[::-1](otomatik olarak çevrilir range(9, -1, -1)) - Python
Yanıtlar:
Deneyin range(100,-1,-1), üçüncü argüman kullanılacak artıştır ( burada belgelenmiştir ).
("aralık" seçenekleri, başlatma, durdurma, adım burada belgelenir )
Benim düşünceme göre, bu en okunabilir olanı:
for i in reversed(xrange(101)):
print i,
reversed(xrange(len(list)))etmek xrange(len(list)-1:-1:-1); ikincisi çok fazla garip görünüyor -1.
rangeolduğu gibi davranır xrange. @hacksoi, kullanım durumuna bağlıdır, ancak diyelim ki büyük bir arabellekte geriye doğru yinelediğinizi varsayalım, diyelim ki 10 MB. Ters bir jeneratör kullanmak milisaniye alır ve sadece birkaç bayt bellek kullanır.
Kodunuz neden çalışmadı
Kodunuz for i in range (100, 0)iyi, hariç
üçüncü parametre ( step) varsayılan olarakdır +1. Bu nedenle, -1geriye doğru adım olarak range () için 3. parametreyi belirtmeniz gerekir .
for i in range(100, -1, -1):
print(i)
NOT: Bu çıkışta 100 ve 0 içerir.
Birden çok yol var.
Daha iyi yol
Pitonik yol için PEP 0322'yi kontrol edin .
Bu 100'den 0'a (100 ve 0 dahil) yazdırmak için Python3 pythonic örneğidir.
for i in reversed(range(101)):
print(i)
reversedPEP-322'de nasıl uygulanacağı tavsiyesi yanıltıcıdır, bu nedenle tekrarlanabilir reversedçağrıyı __reversed__çağıracak ve sonucu döndürecek ve rangenesneler için bu tembel bir değerlendirilmiş range_objectyineleyicidir. Kısacası: bu yöntemi kullanmak hala tembel bir değerlendirmedir.
for var in range(10,-1,-1) İşler
Bunu codeacademy egzersizlerinden birinde denedim (tersine ne de :: -1 kullanmadan bir dizede ters karakterleri)
def reverse(text):
chars= []
l = len(text)
last = l-1
for i in range (l):
chars.append(text[last])
last-=1
result= ""
for c in chars:
result += c
return result
print reverse('hola')
Negatif indeks gerekiyordu bu yüzden aynı anda iki liste üzerinden döngü istedim. Bu benim çözümüm:
a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
print(i, a[i])
Sonuç:
-1 2
-2 5
-3 4
-4 3
-5 1
Oh tamam soruyu yanlış okudum, sanırım bir dizide geriye gitmekle ilgili? eğer öyleyse, ben var:
array = ["ty", "rogers", "smith", "davis", "tony", "jack", "john", "jill", "harry", "tom", "jane", "hilary", "jackson", "andrew", "george", "rachel"]
counter = 0
for loop in range(len(array)):
if loop <= len(array):
counter = -1
reverseEngineering = loop + counter
print(array[reverseEngineering])
globalve timeönemli değildir.
Python'da özel bir ters mekanizma da oluşturabilirsiniz. Hangi tekrarlanabilir bir geriye döngü için herhangi bir yerde kullanılabilir
class Reverse:
"""Iterator for looping over a sequence backwards"""
def __init__(self, seq):
self.seq = seq
self.index = len(seq)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index -= 1
return self.seq[self.index]
>>> d = [1,2,3,4,5]
>>> for i in Reverse(d):
... print(i)
...
5
4
3
2
1
a = 10
for i in sorted(range(a), reverse=True):
print i
sortedtüm listeyi gereksiz yere bellekte saklayacağını biliyorsunuz, değil mi? Bu israftır ve büyük olanlar için uygun değildir a.