
Jonh
18.03.2017
08:03:13

Александр
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
Да изменять входные аргументы, не самая лучшая практика, но бывает, что это необходимо.

Roman
18.03.2017
09:25:50

Serge
18.03.2017
09:43:44
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
но мне всё равно не нравится идея с модификацией переданного. получается какой-то Си

Dmitry
18.03.2017
10:12:32

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

Serge
18.03.2017
10:44:53

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 разный
И вот второй - это про новый лист уже, а не про слайс

Roman
18.03.2017
11:01:21
https://github.com/vvanders/wasm_lua

Александр
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[:] айдишник из первого пнинта будет занят , пока существует ссылка с.


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

Александр
18.03.2017
11:55:44

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
Я тоже подписан на этот паблик

Serge
18.03.2017
17:02:11

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

Serge
19.03.2017
08:36:21

Danil
19.03.2017
10:13:56
О_о джанга в качестве Model, flask в качестве view, template. В репе одна задача-вопрос WHYYYYY ))
flango - стартовый набор, Django-бэкэнд, Flask-фронтенд
http://github.com/kennethreitz/flango

Serge
19.03.2017
10:17:58

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

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

Александр
19.03.2017
14:04:41

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

Павел
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
деньги вперед

Александр
20.03.2017
12:02:24

Serge
20.03.2017
12:04:11
ну и память надо мерять

Alexander (18́+)
20.03.2017
12:08:17


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