2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
1

Некорректная работа функции range

11.03.2017, 07:25. Показов 3690. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Что-то функция range в третьем Python работает так
Python
1
range(8)
>>range(0,8)
и т.д. - Что это такое?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2017, 07:25
Ответы с готовыми решениями:

Некорректная работа модуля
Доброго времени суток. Написал модуль, в котором создается класс. При копировании кода из файла...

Некорректная работа
Подскажите пожалуйста. Поставил win10, как-то сразу криво пошла установка anaconda. Запуск только...

Некорректная работа DateFieldListFilter
Доброго часу. Есть встроенный фильтр по датам в Django: DateFieldListFilter, решил я добавить туда...

Некорректная работа requests
Всем привет,я создал бесконечный цикл в котором идёт GET-запрос на сервер после идёт задержка.Так...

10
0 / 0 / 2
Регистрация: 28.02.2017
Сообщений: 29
11.03.2017, 08:04 2
range работает нормально,это стандартно.
Смотря с какой целью нужно. Можно получить список
Python
1
list(range(8))
кортеж
Python
1
 tuple(range(8))
Python
1
2
 for i in range(8):
    print(i) # для получения чисел
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
11.03.2017, 10:40 3
Цитата Сообщение от SKY_SHY Посмотреть сообщение
Что-то функция range в третьем Python работает так
Python
1
range(8)
>>range(0,8)
и т.д. - Что это такое?)
А что не понравилось? Если указан только один аргумент n, то range выдает последрвательность от нуля до n-1 с шагом 1

range(8), range(0,8) и range(0,8,1) эквивалентны
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
11.03.2017, 12:21 4
Цитата Сообщение от oldnewyear Посмотреть сообщение
А что не понравилось
Да, видимо, что "ленивой" она стала :-). Как раньше xrange.
------------------------
И кто-то (lambda x:x['ТС']) забывает читать документацию.
0
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
11.03.2017, 13:28 5
Цитата Сообщение от СергейЧА Посмотреть сообщение
Смотря с какой целью нужно. Можно получить список
Python
Выделить код
1
list(range(8))
кортеж
Python
Выделить код
1
tuple(range(8))
или множества
Python
1
set(range(5))
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.03.2017, 16:21 6
Цитата Сообщение от Garry Galler Посмотреть сообщение
Да, видимо, что "ленивой" она стала :-). Как раньше xrange.
Если бы она была ленивой, то такое не было-бы возможно. Просто она возвращает объект range, а не список.
Python
1
2
3
4
5
r = range(5)
r[0]
0
r[3]
3
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
11.03.2017, 17:06 7
Цитата Сообщение от alex925 Посмотреть сообщение
Если бы она была ленивой, то такое не было-бы возможно
И тем не менее она ленивая (понятие 'ленивости' функции в разных языках фундаментально ничем не отличается), то есть вычисляет очередное значение только в момент обращения к нему.
То, что она еще и по индексу умеет возвращать - просто деталь реализации конкретного генератора.
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.03.2017, 17:21 8
Garry Galler, Открой документацию и не увидишь там ничего о том, что она ленивая. range возвращает просто неизменяемую последовательность и все
range is actually an immutable sequence type
https://docs.python.org/3.5/li... func-range

Цитата Сообщение от Garry Galler Посмотреть сообщение
просто деталь реализации конкретного генератора.
К генератору невозможно обращаться по индексу, просто в принципе. Он только выдает каждое следующие значении (не сохраняя предыдущие) и все. Иначе это уже не генератор.
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
11.03.2017, 17:41 9
Ок. Сколько занимает в памяти это неизменяемая последовательность?
Python
1
range(10000000000000000000000000000000000000000000000000000000000000000000000000000000)
P. S. Это все еще не "ленивая" последовательность?

Добавлено через 1 минуту
Цитата Сообщение от alex925 Посмотреть сообщение
Он только выдает каждое следующие значении (не сохраняя предыдущие) и все. Иначе это уже не генератор.
Генератор как раз сохраняет состояние, иначе как бы он знал с какой точки делать возврат.

Добавлено через 16 минут
Цитата Сообщение от alex925 Посмотреть сообщение
Открой документацию
И читаем ниже:
The advantage of the range type over a regular list or tuple is that a range object will always take the same (small) amount of memory, no matter the size of the range it represents (as it only stores the start, stop and step values, calculating individual items and subranges as needed).
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
11.03.2017, 17:42 10
Цитата Сообщение от Garry Galler Посмотреть сообщение
Генератор как раз сохраняет состояние
Я о том, что он не знает предыдущие состоянии и будущие тоже, по этому по нему нельзя пробегаться туда обратно.
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
11.03.2017, 17:45 11
Цитата Сообщение от alex925 Посмотреть сообщение
по этому по нему нельзя пробегаться туда обратно
А вот вычислить отдельное значение запрошенное по индексу - запросто.
0
11.03.2017, 17:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2017, 17:45
Помогаю со студенческими работами здесь

py2exe и cx_freeze некорректная работа
Есть GUI приложение с использованием wxPython для Python 2.7 при запуске cx_freeze создается...

Работа с INI: некорректная работа пользовательской функции
Ранее нашел код для работы с ini-файлами: public class INI { ///...

Некорректная работа функции
Язык Си, суть программы - подсчитать кол-во единиц в двоичном представлении десятичного числа,...

Некорректная работа функции Dir
Функция Dir с параметром vbDirectory должна выдавать список папок в указанном каталоге, НО... ...

Некорректная работа функции wrait()
В буфер канала должно заносится значение (потомком), а родитель должен его считывать. Но почему-то...

Некорректная работа функции pow
Доброго времени суток. задали в универе написать прогу которая решала б кубическое уравнение.В...

Некорректная работа функции fscanf
Пишу прогу. Нужно считать из файла данные. Читаю при помощи fscanf. В итоге прога вроде работает, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru