Я можу помилитися (просто повідомте мене, і я видалю питання), але, здається, python не відповість
for n in range(6,0):
print n
Я спробував використовувати xrange, і він теж не працював. Як я можу це реалізувати?
Я можу помилитися (просто повідомте мене, і я видалю питання), але, здається, python не відповість
for n in range(6,0):
print n
Я спробував використовувати xrange, і він теж не працював. Як я можу це реалізувати?
for i in reversed(mat):
хоча це може бути повільніше
Відповіді:
Це дуже пізно, але я просто хотів додати, що є більш елегантний спосіб: використання reversed
for i in reversed(range(10)):
print i
дає:
4
3
2
1
0
reversed(range)
безкоштовно завдяки приємній range_reverse
оптимізації, вбудованій в CPython. Я зробив кілька швидких тестів і не зміг знайти істотну різницю вартості між step=-1
і reversed()
в обох Python 2.7 і 3.3. Також зверніть увагу, що ця ідіома використовується у heapq .
xrange
свої тести на Python 2.7, reverse
вони працюватимуть на звичайному, вже створеному списку, а не на об'єкті діапазону; отже, ви хочете сказати, що будь-який список можна ефективно змінити, або просто range/xrange
об’єкти? (код heapq, на який ви посилаєтесь, включає об'єкт діапазону Python 3).
reversed(range(10))
не вдається вивести 4
через 0
. Можливо, ви мали на увазі range(5)
?
for n in range(6,0,-1)
Це дало б вам 6,5,4,3,2,1
Що стосується
for n in reversed(range(0,6))
дав би тобі 5,4,3,2,1,0
Пізно на вечірку, але для тих, кому доручено створити власну або хоче побачити, як це буде працювати, ось функція з додатковим бонусом щодо перестановки значень старт-стоп на основі бажаного приросту:
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
Негативний приріст:
for i in RANGE(1, 10, -1):
print(i)
Або зі зворотним запуском-зупинкою:
for i in RANGE(10, 1, -1):
print(i)
Вихід:
10
9
8
7
6
5
4
3
2
1
Регулярне збільшення:
for i in RANGE(1, 10):
print(i)
Вихід:
1
2
3
4
5
6
7
8
9
Нульове збільшення:
for i in RANGE(1, 10, 0):
print(i)
Вихід:
'Error! Please enter nonzero increment value!'
Для python3 де -1
вкажіть значення, яке потрібно зменшувати на кожному кроці
for n in range(6,0,-1):
print(n)