238328 25.06.2012 15:49

На днях выйдет питон 3.3(много годноты), поэтому просто отсос в тему:
Шел 2012 год, а в питоне 3.3 добавили методы clear и copy для объектов list и bytearray.

Recommended by:

@kb: всё равно годнота

1. eoranged 25.06.2012 15:50 Pidgin

Не нужны же.

2. 238328 25.06.2012 16:02

я бы еще накидал ссылок, но в 3.3 столько всего, советую прочитать от корки до корки

3. kb238328 /2 25.06.2012 16:03 c8541125

зачем? чтоб депрессировать и колоться кактусом? :(

4. 238328eoranged /1 25.06.2012 16:03

слайсы это НЕЧИТАЕМО

5. eoranged238328 /2 25.06.2012 16:03 Pidgin

Ты так радуешься как будто там запилили Анус.пёс()

6. 238328kb /3 25.06.2012 16:04

чтобы наконец понять, что 2.7 больше не разрабатывается

7. eoranged238328 /4 25.06.2012 16:04 Pidgin

Ты ниасилил порст.

8. 238328eoranged /7 25.06.2012 16:06

просто чистить строку(в данном случае bytearray) присваиванием пустой строки как бы не ок

9. kb238328 /6 25.06.2012 16:06 c8541125

да поняли давно уже, еще когда в python-ideas писал, по рукам за 2.7 питон били

10. eoranged238328 /4 25.06.2012 16:07 Pidgin

Учись.
In [1]: l1 = [1, 2, 3, 4]
In [2]: l2 = list(l1)
In [3]: l1[2] = 100
In [4]: print l1, l2
[1, 2, 100, 4] [1, 2, 3, 4]

Работает как конструктор копии в нормальных ЯП.

11. 238328eoranged /10 25.06.2012 16:11 20087115571340640432517870

со? Это неправильно

12. eoranged238328 /11 25.06.2012 16:12 Pidgin

Prove.

13. kbeoranged /10 25.06.2012 16:13 c8541125

> конструктор копии
> нормальных ЯП

не имеешь ли ты в виду C++?

14. 238328eoranged /12 25.06.2012 16:13 20087115571340640432517870

%timeit себе пруф, пес

15. eoranged238328 /14 25.06.2012 16:28 Pidgin

Глотай глубже:
In [12]: timeit('list(a)', 'from random import randint; a = [randint(1, x) for x in range(3,10000)]', number=100000)
Out[12]: 16.86609411239624

In [13]: timeit('a[:]', 'from random import randint; a = [randint(1, x) for x in range(3,10000)]', number=100000)
Out[13]: 17.96528196334839

16. 238328eoranged /15 25.06.2012 16:34 20087115571340640432517870

неправильно же делаешь

17. 238328238328 /16 25.06.2012 16:36

посоны, скиньте бинарный инсталлер кутиконсоли айпитона под сперм

18. 238328eoranged /15 25.06.2012 19:40

просто ты объелся синтетики

In [19]: timeit('x = a[:]', 'from random import randint; a = [[randint(1, x) for x in xrange(3,100)] for i in xrange(100)]', number=100000)
Out[19]: 0.054429054260253906

In [20]: timeit('x = list(a)', 'from random import randint; a = [[randint(1, x) for x in xrange(3,100)] for i in xrange(100)]', number=100000)
Out[20]: 0.08735990524291992

Более того:
In [26]: timeit('x = a[:]', 'from random import randint; a = [[[[[1]*10]*10]*10]*10]', number=100000)
Out[26]: 0.024785995483398438

In [27]: timeit('x = list(a)', 'from random import randint; a = [[[[[1]*10]*10]*10]*10]', number=100000)
Out[27]: 0.0480799674987793

Покормил

19. 238328238328 /18 25.06.2012 19:46

Более того, вот реальный отсос на полностью несинтетическом примере(н-уровневые листы, примем что н=5):

In [85]: %%timeit -n100000 a = (lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v))))(lambda f: (lambda n: [f(n-1) for i in range(8)] if n else 0))(5)
...: x = a[:]
...:
100000 loops, best of 3: 220 ns per loop

In [86]: %%timeit -n100000 a = (lambda f: (lambda x: f(lambda v: x(x)(v)))(lambda x: f(lambda v: x(x)(v))))(lambda f: (lambda n: [f(n-1) for i in range(8)] if n else 0))(5)
...: x = list(a)
...:
100000 loops, best of 3: 367 ns per loop

Do you really want to delete ?