Yanılıyor olabilirim (sadece bana bildirin ve soruyu sileceğim) ancak python yanıt vermiyor
for n in range(6,0):
print n
Xrange kullanmayı denedim ve işe yaramadı. Bunu nasıl uygulayabilirim?
Yanılıyor olabilirim (sadece bana bildirin ve soruyu sileceğim) ancak python yanıt vermiyor
for n in range(6,0):
print n
Xrange kullanmayı denedim ve işe yaramadı. Bunu nasıl uygulayabilirim?
for i in reversed(mat):
daha yavaş olsa da deneyebilirsiniz
Yanıtlar:
for n in range(6,0,-1):
print n
# prints [6, 5, 4, 3, 2, 1]
range(5,-1,-1)
. Yine de bunu muhtemelen deneme yanılma yoluyla çözebilirdi.
Bu çok geç, ancak daha zarif bir yol olduğunu eklemek istedim: reversed
for i in reversed(range(10)):
print i
verir:
4
3
2
1
0
reversed(range)
bulunan güzel range_reverse
optimizasyon sayesinde ücretsiz olarak alırsınız . Bazı hızlı kıyaslamalar yaptım step=-1
ve reversed()
Python 2.7 ve 3.3 arasında ve içinde önemli bir maliyet farkı bulamadım . Ayrıca bu deyimin heapq'de kullanıldığını unutmayın .
xrange
Python 2.7 testlerinizde reverse
kullanmadığınız sürece , bir aralık nesnesinde değil, sıradan, önceden oluşturulmuş bir listede çalışacaktır; yani herhangi bir listenin verimli bir şekilde tersine çevrilebileceğini mi söylüyorsunuz yoksa sadece range/xrange
nesneler mi? (bağladığınız yığın kodu bir Python 3 aralık nesnesi içerir).
reversed(range(10))
muhtemelen çıkış olamaz 4
yoluyla 0
. Belki de demek istedin range(5)
?
for n in range(6,0,-1)
Bu sana verecek 6,5,4,3,2,1
Gelince
for n in reversed(range(0,6))
sana veririm 5,4,3,2,1,0
Partiye geç kaldınız, ancak kendisininkini yaratmakla görevli olan veya bunun nasıl çalışacağını görmek isteyen herkes için, istenen artışa göre start-stop değerlerini yeniden düzenlemenin ek bir bonusu olan fonksiyon burada:
def RANGE(start, stop=None, increment=1):
if stop is None:
stop = start
start = 1
value_list = sorted([start, stop])
if increment == 0:
print('Error! Please enter nonzero increment value!')
else:
value_list = sorted([start, stop])
if increment < 0:
start = value_list[1]
stop = value_list[0]
while start >= stop:
worker = start
start += increment
yield worker
else:
start = value_list[0]
stop = value_list[1]
while start < stop:
worker = start
start += increment
yield worker
Negatif artış:
for i in RANGE(1, 10, -1):
print(i)
Veya start-stop tersine çevrildiğinde:
for i in RANGE(10, 1, -1):
print(i)
Çıktı:
10
9
8
7
6
5
4
3
2
1
Düzenli artış:
for i in RANGE(1, 10):
print(i)
Çıktı:
1
2
3
4
5
6
7
8
9
Sıfır artış:
for i in RANGE(1, 10, 0):
print(i)
Çıktı:
'Error! Please enter nonzero increment value!'
Python3 -1
için, her adımda azaltılacak değeri belirtin
for n in range(6,0,-1):
print(n)