Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 May 18

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
наша задача - расфасовать негативные и положительные числа по двум спискам.
вариант первый:
lst = [...тут числа]
negatives = []
positives = []
for i in lst:
   if i < 0:
       negatives.append(i)
   else:
       positives.append(i)


второй вариант:
negatives = [i for i in lst if i < 0]
positives = [i for i in lst if i >= 0]
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
я здесь не вижу лучшего и худшего варианта
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
в данном случае я тоже разницы не вижу
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ещё второй вариант можно через filter организовать
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Евгений
в данном случае я тоже разницы не вижу
ну на самом деле первый быстрее
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
почему?
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
потому что тесты это демонстрирует
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
потому что тесты это демонстрирует
я рассчитывал на ответ - потому что проход один :)
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
нагенерируй массив из 10кк элементов рандомных от -100 до 100 и прогони
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
второй будет отставать
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
плюс первый можно ещё больше улучшить, если заранее забить списки длинной в исходный список нулями
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
и делать не append, а напрямую к элементу обращаться
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Евгений
я рассчитывал на ответ - потому что проход один :)
не очень корректный ответ был бы)
не всегда один проход быстрее двух
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Кирилл Картвелишвили
и делать не append, а напрямую к элементу обращаться
потому что список будет обращаться за новой памятью?
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Евгений
потому что список будет обращаться за новой памятью?
да
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
питон конечно выделяет доп память, когда создаёшь пустой список, под него зарезервирован кусок памяти. но этот кусок явно не под 10 лямов интов)
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
насколько я помню питон с некоторым запасом берет, но да, рано или поздно... ну да)
источник

Е

Евгений in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
вообще ТФ в лекциях по алгоритмам приучил заводить [0] * N под известное количество элементов
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
если бы при каждом создании пустого списка, он бы отнимал место под 10 лямов интов, то это сразу минус 38 мб
источник

КК

Кирилл Картвелишвили... in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Евгений
вообще ТФ в лекциях по алгоритмам приучил заводить [0] * N под известное количество элементов
да, это хорошая практика
источник