@spbpython

Страница 330 из 785
Александр
18.03.2017
08:14:59
Roman
18.03.2017
08:46:50
Т.е. чем это лучше a = list() ?

Google
Roman
18.03.2017
08:57:45
@iroln @lig11 ?

Andrey
18.03.2017
09:08:58
Зачем это может быть надо?
В случае, если ты хочешь поменять список, который пришёл тебе как параметр функции например

Eugene
18.03.2017
09:11:17
Да изменять входные аргументы, не самая лучшая практика, но бывает, что это необходимо.

Serge
18.03.2017
09:43:44
ну это относительно редкий случай, кмк.
Ну да. А еще, когда оно не list.

del a[:] ничего не знает о типе коллекции

И даже a = a.__class__() ещё хуже, потому что мы не знаем какие аргументы были у конструктора, когда коллекцию создавали

Александр
18.03.2017
09:59:44
А как такое может быть, что a[:] вызванный два раза выдает один и тот же айдишник? При этом тип у этого объекта list, такой же, как и у a. При этом del a удалит a, а del a[:] удалит не отображение, а лишь только элементы. Это взрыв мозга какой-то

Roman
18.03.2017
10:00:38
del a[:] ничего не знает о типе коллекции
ну да, я уже подумал о происходящем под капотом

но мне всё равно не нравится идея с модификацией переданного. получается какой-то Си

Eugene
18.03.2017
10:13:15
Вместо del можно и так сделать a[:] = list() То же самое в результате. Правда, не знаю, что эффективнее. Сейчас поискал у себя во всём коде, только в одном месте модифицируется переданный список.

Serge
18.03.2017
10:44:53
там есть slice_cache, а нет. это не то. по идее id не гарантированно будет одинаковый. это же копия.
type(a[:]) показывает list? Видимо, вычисляется выражение, а оно лист

Google
Dmitry
18.03.2017
10:45:13
ага это list

Serge
18.03.2017
10:45:32
Более того, id сделает то же и вернет id листа, а не слайса

Корпускулярно-волновой дуализм слайса в Питоне

Sergey
18.03.2017
10:55:02
>>> id(a) 140624854404128 >>> id(a[:]) 140624854688400

id разный

Serge
18.03.2017
10:58:14
id разный
И вот второй - это про новый лист уже, а не про слайс

Александр
18.03.2017
11:28:54
я кажется понял, почему так. a = [1,2,3] print id(a[:]) print id(a[:]) здесь на первом принте не создается ссылок для слайса, поэтому он тут же убивается. А второй вызов слайса прикрепляется к тому же уже освобожденному идентификатору a = [1,2,3] print id(a[:]) c = a[:] print id(a[:]) выведет уже два разных айдишника, потому что в выражении c=a[:] айдишник из первого пнинта будет занят , пока существует ссылка с.

Dmitry
18.03.2017
13:17:44
Хотел было сделать так: text[:-2] += some_text Получил: TypeError: 'str' object does not support item assignment А если так: »a = [1, 2, 3, 4] »a[:-2] += [5, 6] »a [1, 2, 5, 6, 3, 4] Прикольно
не сразу понял почему так получилось :( >>> a = [1, 2, 3, 4] >>> a[:-2] += [5, 6] >>> a [1, 2, 5, 6, 3, 4] хотя если записать как a[:-2] = a[:-2] + [5, 6] становится понятнее.

Roman
18.03.2017
13:43:44


https://www.youtube.com/watch?v=wjFgOckkVYM

Aleksander
18.03.2017
14:38:44
кто там спрашивал ранее

https://pp.userapi.com/c836730/v836730585/34670/rh3W-PYBWiw.jpg

Vitali K.
18.03.2017
14:44:21
Я тоже подписан на этот паблик

Aleksander
18.03.2017
18:18:31
А? Чего?
смотри выше мессадж

на последней посиделке кто-от спрашивал про то как называется

Google
Serge
18.03.2017
18:22:45
Александр
18.03.2017
19:52:20
А. Ясно. Надо свою питоновскую отыскать.
А что у вас не питоновское?

Dmitry
19.03.2017
01:57:58
https://twitter.com/dabeaz/status/843256520678739972

Александр
19.03.2017
07:26:02
https://twitter.com/dabeaz/status/843256520678739972
Интересно, почему это сразу не сделали

Serge
19.03.2017
08:36:21
Интересно, почему это сразу не сделали
Сначала инструмент, потом интеграция. Но сотни тысяч строк кода уже никогда не избавятся от open(str(mypath))

Danil
19.03.2017
10:13:56
О_о джанга в качестве Model, flask в качестве view, template. В репе одна задача-вопрос WHYYYYY ))

flango - стартовый набор, Django-бэкэнд, Flask-фронтенд http://github.com/kennethreitz/flango

amureki
19.03.2017
11:04:10
Он писал как-то, что ему нравится орм джанги и простота описания вьюшек и роутинг фласка, поэтому запилил это :)

Dmitry
19.03.2017
12:20:17
https://twitter.com/hynek/status/843430109503787008

Roman
19.03.2017
13:03:22
>In L2 and L3 throughput tests of 32 100GbE ports, Mellanox Spectrum delivered 100% line rate throughput with zero frame loss in at all frame sizes from 64-byte to 9216-byte jumbo frames in port-pair and full mesh scenarios.

читая такое ощущаешь себя в прошлом.

Serge
19.03.2017
13:15:19
читая такое ощущаешь себя в прошлом.
С точностью до единиц измерения на порту

Roman
19.03.2017
13:23:42
С точностью до единиц измерения на порту
да хрен с ним )) у людей 32 порта по 100(сто) гигабит.

Serge
19.03.2017
13:24:30
А, в смысле у тебя такого нет и тебе завидно?:)

Александр
19.03.2017
14:04:41
да хрен с ним )) у людей 32 порта по 100(сто) гигабит.
можешь пожалуйста кратко пояснить, о чем это :)

Roman
19.03.2017
14:08:15
это цитата из сравнительного теста чипов для ethernet-свитчей. только свитчей с портами на 100(сто) гигабит. и в этом тесте нагружали 32 порта под завязку и смотрели наличие потерь.



а rust выглядит няшно

Google
Andrey
20.03.2017
08:30:43
@arturkornakov все, бросаешь джаваскрипт свой?

Artur
20.03.2017
08:34:54
@andreyzakharevich ахахах :) да, в нем жизни нет) На самом деле хочу вакансию чуть позже запостить

Admin
ERROR: S client not available

Andrey
20.03.2017
08:35:49
У нас уже весна, поздно к вам улетать

Artur
20.03.2017
08:38:20
@andreyzakharevich посмотрел сейчас ваш прогноз погоды, чет не айс все равно)

Andrey
20.03.2017
08:39:30
@andreyzakharevich посмотрел сейчас ваш прогноз погоды, чет не айс все равно)
Ну пока там собеседования, сборы, все дела, уже май будет. А у вас дожди пойдут

Павел
20.03.2017
11:56:18
парни есть вопрос на 100$ почему 1-й вариант быстрее import cProfile cProfile.run("sum([int(line) for line in open('1.txt')])") cProfile.run("sum(int(line) for line in open('1.txt'))") где 1.txt -- файл с цифрами 4мб

Sasha
20.03.2017
11:58:25
деньги вперед

Ivan
20.03.2017
12:09:08
в 2 раза

5 function calls in 1.225 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.877 0.877 0.877 0.877 <string>:1(<listcomp>) 1 0.190 0.190 1.225 1.225 <string>:1(<module>) 1 0.000 0.000 1.225 1.225 {built-in method builtins.exec} 1 0.158 0.158 0.158 0.158 {built-in method builtins.sum} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 10000005 function calls in 2.361 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 10000001 1.233 0.000 1.233 0.000 <string>:1(<genexpr>) 1 0.000 0.000 2.361 2.361 <string>:1(<module>) 1 0.000 0.000 2.361 2.361 {built-in method builtins.exec} 1 1.128 1.128 2.361 2.361 {built-in method builtins.sum} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

это причем почему-то cprofile дает такие дикие результаты. обычный тайм говорит что не сильно, но lc быстрее

time python3.6 generators.py python3.6 generators.py 0.82s user 0.01s system 98% cpu 0.849 total time python3.6 lc.py python3.6 lc.py 0.72s user 0.23s system 95% cpu 1.002 total

sum([x for x in range(10000000)]) vs sum((x for x in range(10000000)))

Serge
20.03.2017
12:50:06
@pragus тебе расскажет;)

Google
Serge
20.03.2017
12:50:59
профайлер не считает iowait. а вот cputime включает и iowait тоже

Eugene
20.03.2017
12:54:51
С profile на py3.5 у меня такие результаты: lc: 6 function calls in 1.203 seconds gen: 10000006 function calls in 16.156 seconds

Serge
20.03.2017
12:55:32
генератор закэшировался?

положи генератор в переменную, потом sum, потом del переменной

Eugene
20.03.2017
12:58:39
генератор закэшировался?
не знаю, я просто для файла запускаю: python -m profile a.py где a.py - это одна строчка: s = sum(x for x in range(10000000))

c timeit всё ок %timeit sum((x for x in range(10000000))) 1 loop, best of 3: 1.03 s per loop %timeit sum([x for x in range(10000000)]) 1 loop, best of 3: 1.19 s per loop

Ivan
20.03.2017
13:01:22
да почему-то timeit показывает, что +- работают одинаково. Но time в pypy,py3.5,py3.6 lc > gen, а python 2.7 gen > lc

Eugene
20.03.2017
13:07:16
С vmprof, кстати, работает иначе

Roman
20.03.2017
13:11:39
самый быстрый вариант в pypy такой: def fn(): x = 0 for line in open('1.txt'): x += int(line) return x

In [32]: %timeit fn1() 100 loops, best of 7: 13.7 ms per loop In [33]: %timeit fn2() 100 loops, best of 7: 12.7 ms per loop In [34]: %timeit fn() 100 loops, best of 7: 10.4 ms per loop

10.4 - это что я написал

12.7 - генератор

13.7 - list

Страница 330 из 785