@propython

Страница 225 из 228
Dmitry
16.10.2018
18:41:26
а для программирования must have

Peter
16.10.2018
18:47:54
Собственно, поэтому я и даю ссылки на (неважные) переводы, одновременно призывая читать оригиналы.

Я в школе, например, учил немецкий. Английский стал неплохо понимать благодаря текстовым играм на ZX Spectrum %)

Shub
16.10.2018
18:51:04
увы. немцы говорят на английском

Google
Shub
16.10.2018
18:51:17
никуда не деться. врачи до сих пор латынь учат

Peter
16.10.2018
18:53:54
Это да. Собственно, по той же причине в 50-е годы компьютерные ученые США ходили на курсы русского языка. Поэтому что в те времена советская информатика была на высоте, выходило много важных работ на русском языке. Теперь ситуация совсем иная.

Сейчас уже мало кто знает, но те же Кнут и Хоар изучали русский язык. Ну а раз так, то и нам в нынешних условиях необходимо изучать технический английский :)

Jim Morrison
16.10.2018
19:10:23
Помогите вывести список с конца по начало

? fox.cpp
16.10.2018
19:10:47
print(foobar[::-1])

Peter
16.10.2018
19:15:24
Его же нужно только _вывести_ :)

Peter
16.10.2018
19:17:35
reversed
Да, вот это хороший вариант.

for x in reversed(data): print(x)

Какой вопрос — такой и ответ.

Dima
16.10.2018
19:18:27
[print(i) for i in reversed(l)] xD xD

Google
Shub
16.10.2018
19:19:02
не создает копию

Dima
16.10.2018
19:20:15
Создает же

Поверхностную копию

Peter
16.10.2018
19:21:12
Ага.

И, раз наш канал профессиональный...

То надо проанализировать timeit'ом все предложенные решения с изучением байткода!

Jim Morrison
16.10.2018
19:21:57
Хах

Dima
16.10.2018
19:24:53
То надо проанализировать timeit'ом все предложенные решения с изучением байткода!
Language: py3 Source: import timeit print(timeit.timeit(''' reversed([1, 2, 3, 4, 5]) ''')) print(timeit.timeit(''' [1, 2, 3, 4, 5].reverse() ''')) print(timeit.timeit(''' [1, 2, 3, 4, 5][::-1] ''')) Result: 0.3549813749996247 0.13753758699749596 0.2390971299901139

Быстрее то что не создает копий

Shub
16.10.2018
19:27:34
Поверхностную копию
уже лучше, чем создание полной копии, не так ли?

там ссылка копируется

Dima
16.10.2018
19:28:14
уже лучше, чем создание полной копии, не так ли?
Ниодин из методов не создает подной копии

Только copy.deepcopy

Shub
16.10.2018
19:28:35
[print(i) for i in reversed(l)] xD xD
^^^ этот создает

Dima
16.10.2018
19:28:36
Новый обьект создается

Shub
16.10.2018
19:28:49
reversed() создает новый генератор

Dima
16.10.2018
19:28:51
^^^ этот создает
И срез тоже

Shub
16.10.2018
19:29:40
хм, и вправду создает

Google
Peter
16.10.2018
19:32:08
Новый обьект создается
А такой вариант не рассматривали? :) reversed((1, 2, 3, 4, 5))

Хотя, это не спортивно, уже не список.

Dima
16.10.2018
19:33:59
Во всех вариантах был список, все чесно

Shub
16.10.2018
19:34:12
In [20]: lst = list(range(100000)) In [21]: type(lst) Out[21]: list In [22]: sys.getsizeof(lst) Out[22]: 900112 In [23]: rev = lst[::-1] In [24]: type(rev) Out[24]: list In [25]: sys.getsizeof(rev) Out[25]: 800064

срез почему-то меньше

Peter
16.10.2018
19:38:51
Списки в Питоне резервируют доп. место для расширения размера. Возможно, тут это и проявилось.

Peter
16.10.2018
19:45:51
Я сейчас поиграл с getsizeof. У меня получается простая формула 36 + n * 4 для размера списка. И это работает одинаков и для исходного списка, и для rev.

>>> 40 + (100000 - 1) * 4 400036 >>> sys.getsizeof([0] * 100000) 400036 >>> sys.getsizeof(([0] * 100000)[::-1]) 400036

А вот с list-range результат интересный!

>>> sys.getsizeof(list(range(100000))) 450060 >>> sys.getsizeof(list(range(100000))[::-1]) 400036

Shub
16.10.2018
19:49:11
угу

Peter
16.10.2018
19:49:15
То есть просто list(range) что-то привносит в заголовок (?) списка.

Shub
16.10.2018
19:49:31
надо посмотреть в сорсы PyList, чего гадать-то

Peter
16.10.2018
19:49:32
А после [::-1] у нас получается уже обычный список.

Dmitry
16.10.2018
19:51:02
Профессиональный подход!)

Moon
17.10.2018
05:57:55
Вакансии нельзя

Vlad
17.10.2018
05:58:57
Вакансии нельзя
Ок, сори. Подскажешь куда можно?

Moon
17.10.2018
06:00:05
Хз, глянь тут @proDOT

Vlad
17.10.2018
06:24:49
Google
Vlad
17.10.2018
07:18:29
@jobspy
Спасибо

Alex
17.10.2018
13:35:15
ребят, у меня такая проблема, мне надо вывести название переменной и ее значение. Если подробнее, название функции и что она выводит

где-то видел это как-то main делается, но забыл

подскажите?

Shub
17.10.2018
13:36:39
func.__name__, func.__doc__?

Alex
17.10.2018
13:37:26
да, func.name

точно спассибо

Ляман
17.10.2018
13:45:24
Ребята какой самый быстрый способ парсинга sitemap? Юзал bs4 + xml, но обычные регулярки оказались быстрее, есть способ получше?

Shub
17.10.2018
13:45:50
есть. написать свой парсер

Ляман
17.10.2018
13:46:13
есть. написать свой парсер
На досуге опробую

Dmitry
17.10.2018
13:46:34
юзай просто xml либу которая пошустрее ивсё

Ляман
17.10.2018
13:46:53
юзай просто xml либу которая пошустрее ивсё
ок вроде она сразу C кодом парсит

Shub
17.10.2018
13:48:29
ок вроде она сразу C кодом парсит
регулярки все равно быстрее будут. но их херово поддерживать

Ляман
17.10.2018
13:49:02
они все равно быстрее как не крути

Google
Shub
17.10.2018
13:51:19
быстрее регулярок - только текстовые операции. так что решай, что нужно - или полная поддержка формата, или быстрое вытаскивание нужных полей

а вообще, что значит "быстро"?

bs4 - вообще забей на нее, это костыль для разбора невалидного html

Страница 225 из 228