Saya bisa saja salah (beri tahu saya dan saya akan menghapus pertanyaannya) tetapi tampaknya python tidak mau merespons
for n in range(6,0):
print n
Saya mencoba menggunakan xrange dan tidak berhasil juga. Bagaimana saya bisa menerapkan itu?
Saya bisa saja salah (beri tahu saya dan saya akan menghapus pertanyaannya) tetapi tampaknya python tidak mau merespons
for n in range(6,0):
print n
Saya mencoba menggunakan xrange dan tidak berhasil juga. Bagaimana saya bisa menerapkan itu?
for i in reversed(mat):meskipun itu mungkin lebih lambat
Jawaban:
for n in range(6,0,-1):
print n
# prints [6, 5, 4, 3, 2, 1]
range(5,-1,-1). Meskipun dia mungkin bisa mengetahuinya dari trial and error.
Ini sudah sangat terlambat, tetapi saya hanya ingin menambahkan bahwa ada cara yang lebih elegan: menggunakan reversed
for i in reversed(range(10)):
print i
memberikan:
4
3
2
1
0
reversed(range)secara gratis karena range_reversepengoptimalan yang bagus dibangun ke dalam CPython. Saya melakukan beberapa tolok ukur cepat dan tidak dapat menemukan perbedaan biaya yang signifikan antara step=-1dan reversed()di Python 2.7 dan 3.3. Perlu diketahui juga bahwa idiom ini digunakan di heapq .
xrangedalam pengujian Python 2.7 Anda, reverseakan beroperasi pada daftar biasa yang sudah dibuat, bukan pada objek jangkauan; jadi apakah Anda mengatakan daftar apa pun dapat secara efisien dibalik, atau hanya range/xrangeobjek? (kode heapq yang Anda tautkan melibatkan objek rentang Python 3).
reversed(range(10))tidak mungkin 4keluar 0. Mungkin maksudmu range(5)?
for n in range(6,0,-1)
Ini akan memberimu 6,5,4,3,2,1
Adapun
for n in reversed(range(0,6))
akan memberimu 5,4,3,2,1,0
Terlambat ke pesta, tetapi bagi siapa pun yang ditugasi membuat sendiri atau ingin melihat cara kerjanya, berikut fungsi dengan bonus tambahan untuk mengatur ulang nilai start-stop berdasarkan kenaikan yang diinginkan:
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
Kenaikan negatif:
for i in RANGE(1, 10, -1):
print(i)
Atau, dengan start-stop terbalik:
for i in RANGE(10, 1, -1):
print(i)
Keluaran:
10
9
8
7
6
5
4
3
2
1
Kenaikan reguler:
for i in RANGE(1, 10):
print(i)
Keluaran:
1
2
3
4
5
6
7
8
9
Kenaikan nol:
for i in RANGE(1, 10, 0):
print(i)
Keluaran:
'Error! Please enter nonzero increment value!'
Untuk python3 di mana -1menunjukkan nilai yang akan dikurangi di setiap langkah
for n in range(6,0,-1):
print(n)