utros 06.05.2011 17:39 eoranged

Пстач, вот есть список:
l = [randint(0,10000) for i in range(0,1000000)]
И из него нужно быстренько вытащить список элементов, которые повторяются (количество не волнует). Как бы это по-лучше сделать?

1. SirAnthony 06.05.2011 17:46 Home

filter?

2. SirAnthonySirAnthony /1 06.05.2011 17:48 Home

если влоб, то что-то вроде a = []; b = []; for i in l: if i in a: b.append(i); continue; a.append(i);

4. SirAnthonywerehuman /3 06.05.2011 18:06 Home

Я не понял, зачем 3 массив

5. werehumanSirAnthony /4 06.05.2011 18:08 Psi+

set не list. Я предположил, что по set поиск проще, чем по list

6. utrosSirAnthony /1 06.05.2011 18:12 eoranged

Что-то я не понимаю как фильтром это сделать. Разъясни.

7. SirAnthonyutros /6 06.05.2011 18:13 Home

Это я сказал первое, что пришло в голову, до того, как вчитался в вопрос. В принципе можно, наверное, если получится в одну лямбду все ужать.

8. utrosSirAnthony /7 06.05.2011 18:14 eoranged

Там адский пиздец же выйдет, не?

9. SirAnthonyutros /8 06.05.2011 18:15 Home

разумеется

10. utroswerehuman /5 06.05.2011 18:15 eoranged

У меня такое чувство, что счетчик с defaultdict будет быстрее.

11. utrosutros /10 06.05.2011 18:37 eoranged

А нет, вру.

12. utrosSirAnthony /2 06.05.2011 18:54 eoranged

И да, это пиздец как медленно.
/5 в десятки раз быстрее оказался.

13. SirAnthonyutros /12 06.05.2011 18:55 Home

>если влоб

14. utrosSirAnthony /13 06.05.2011 18:55 eoranged

Если полбу =)

Do you really want to delete ?