@python_beginnersЭта группа больше не существует

Страница 1014 из 1885
Agent
28.12.2016
19:30:03
Как часики)

Maksim
28.12.2016
19:50:31
как вернуть все ссылки с имиджами? from bs4 import BeautifulSoup import requests html=('<html><body><img src="test.jpg">\n''<p>Some text\n''<img SRC=\'well.png\'>\n''</p></body></html>') soup = BeautifulSoup(html, "html.parser") print(soup) result = soup.findAll('img src=')[:].get_text() print(result)

img scr=

*src

Google
Johnnie
28.12.2016
20:03:38
@bladdon @zartsoft t1: 1332.5145938309997 t2: 808.875277266 t3: 134.11211553499925

:)

list_len = 300 min_num, max_num = 1, 50 repeats = 3

Denis
28.12.2016
20:03:56
t3 это кто?

Johnnie
28.12.2016
20:04:09
это твое

Denis
28.12.2016
20:04:29
1000000 сделай

Johnnie
28.12.2016
20:04:51
1000000 сделай
это на ночь тогда

[False, True, False, True] should equal [20, 37, 21]

эээ, стоп

Zart
28.12.2016
20:06:49
ну я писал навскидку

Johnnie
28.12.2016
20:10:13
а можешь не навскидку?

я чето не вкурю как тут

Google
Johnnie
28.12.2016
20:10:22
хочу запустить большой тест)

Zart
28.12.2016
20:14:02
>>> import collections >>> order, max_e = [1, 2, 3, 1, 2, 3, 3, 3], 2 >>> c = collections.Counter(order) >>> list(filter({k for k, v in c.items() if v <= max_e}.__contains__, order)) [1, 2, 1, 2]

перепутал фильтр с мапом

Johnnie
28.12.2016
20:14:53
Test.assert_equals(delete_nth([20,37,20,21], 1), [20,37,21])

[37, 21] should equal [20, 37, 21]

Igor
28.12.2016
20:17:56
This code finds all tags whose id attribute has a value, regardless of what the value is: soup.find_all(id=True)

...: images = soup.findAll('img', src=True) ...: In [4]: for image in images: ...: print(image.attrs['src'])

Zart
28.12.2016
20:19:35
Johnnie
28.12.2016
20:20:10
это почему?
Task Given a list lst and a number N, create a new list that contains each number of lst at most N times without reordering. For example if N = 2, and the input is [1,2,3,1,2,1,2,3], you take [1,2,3,1,2], drop the next [1,2] since this would lead to 1 and 2 being in the result 3 times, and then take 3, which leads to [1,2,3,1,2,3]. Example delete_nth ([1,1,1,1],2) # return [1,1] delete_nth ([20,37,20,21],1) # return [20,37,21]

Igor
28.12.2016
20:20:53
а

прикольная задачка

Zart
28.12.2016
20:21:03
а, я условия не так прочитал

Johnnie
28.12.2016
20:21:11
я тоже сначала не так прочел

Zart
28.12.2016
20:21:15
я думал оставить лишь элементы, встречающиеся не чаще N раз

Johnnie
28.12.2016
20:21:15
думаю а хули тут

.count() в компрехеншн и алга

Igor
28.12.2016
20:21:37
ыы, то же самое подумал

Zart
28.12.2016
20:23:36
.count() в компрехеншн и алга
ну так алга же: >>> [elem for i, elem in enumerate(order) if order[:i].count(elem) < max_e] [20, 37, 21]

Johnnie
28.12.2016
20:23:53
ну с енумерейтом, да)

Google
Zart
28.12.2016
20:24:09
это чтобы не перекладывать из одного листа в другой

Denis
28.12.2016
20:24:14
долга

Johnnie
28.12.2016
20:24:16
я хотел сначала что-то вроде [i for i in order if order.count(i) <= e_max]

Zart
28.12.2016
20:24:25
долго, да. треугольно ж

я хотел сначала что-то вроде [i for i in order if order.count(i) <= e_max]
ну поэтому енумерейт со слайсом, да 8)

хммм

>>> import collections >>> >>> order, max_e = [20, 37, 20, 21], 1 >>> >>> def nth(e, cache=collections.defaultdict(int)): ... def check(x): ... cache[x] += 1 ... return cache[x] <= e ... return check ... >>> list(filter(nth(max_e), order)) [20, 37, 21]

Igor
28.12.2016
20:36:10
как это работает :О

Johnnie
28.12.2016
20:36:14
ээээ...

Zart
28.12.2016
20:36:22
т.е. функция проверки ведет подсчет и возвращает тру/фалс если порог превышен

Igor
28.12.2016
20:36:24
(риторический вопрос, лень вникать, туплю, пойду спать лучше)

аааа

ыыыы

Zart
28.12.2016
20:36:35
фильтр тогда отбрасывает что превысило порог

Igor
28.12.2016
20:36:59
а defaultdict(int) нулю равен по умолчанию получается?

я идиот всегда lambda: 0 писал

Zart
28.12.2016
20:37:16
это по идее должно дать самый эффективный по скорости вариант, за счет отслеживания колва, а не считать его каждый раз заново через count

>>> int() 0

Johnnie
28.12.2016
20:38:10
Passed: 45 Failed: 0

:)

Google
Denis
28.12.2016
20:39:00
А время скоко?

Johnnie
28.12.2016
20:39:06
запускаю с 1000000

А время скоко?
это на codewars тесты прошли

бля, а как быстрей всего вывести время

datetime.datetime.time() ?

Denis
28.12.2016
20:39:49
timeit.timeit(..., number=1)

Johnnie
28.12.2016
20:41:06
не, я не про то

Zart
28.12.2016
20:41:13
мда. граблями меня нихуево ща прищемило

import collections order, max_e = [20, 37, 20, 21], 1 def nth(e): cache=collections.defaultdict(int) def check(x): cache[x] += 1 return cache[x] <= e return check list(filter(nth(max_e), order))

потому что иначе придётся каждый раз указывать свежий кэш =_=;

Johnnie
28.12.2016
20:42:44
тож 45 прошло

его запущу тогда

Zart
28.12.2016
20:43:27
>>> list(filter(nth(max_e), order)) [20, 37, 21] >>> >>> [i for i in order if nth(max_e)(i)] [20, 37, 20, 21] >>> >>> f = nth(max_e) ; [i for i in order if f(i)] [20, 37, 21] тот случай когда нельзя напрямую фильтр в компрехеншен перегнать

во втором случае заново пересоздается кэш на каждый элемент в фильтре вспомогательная функция генерится лишь раз в третьем варианте вынесено для того же эффекта

Denis
28.12.2016
20:45:45
(lambda f: [i for i in order if f(i)])(nth(max_e))

Johnnie
28.12.2016
20:46:49
@bladdon ты общее время хотел посмотреть?

Denis
28.12.2016
20:46:53
Ага

Johnnie
28.12.2016
20:46:54
или отдельное для каждого теста?

Zart
28.12.2016
20:46:56
врапперная лямбда.. я собсно изначально хотел это всё однострочником захуячить

Johnnie
28.12.2016
20:46:56
а ок

Google
Johnnie
28.12.2016
20:47:00
Started at: 2016-12-28 20:46:01.461851 Finished at: 2016-12-28 20:46:11.356301 In seconds: 0:00:09.894450

Zart
28.12.2016
20:47:16
просто слишком ёбнуто выходит там с c.__setitem__, c.setdefault

Johnnie
28.12.2016
20:47:17
но это мелкий тест

Зарт, оставляю в том виде?

def delete_nth3(order, max_e): def nth(e): cache = collections.defaultdict(int) def check(x): cache[x] += 1 return cache[x] <= e return check return list(filter(nth(max_e), order))

Zart
28.12.2016
20:47:52
ага. читабельно ж

Denis
28.12.2016
20:48:09
Сравни вот это с моим на крупном тесте

Johnnie
28.12.2016
20:48:11
list_len = 1000000 min_num, max_num = 1, 50 repeats = 3

Denis
28.12.2016
20:48:14
Порядка 10^5

Johnnie
28.12.2016
20:48:15
или другие поставить?

Denis
28.12.2016
20:48:22
Ну или ^6

Johnnie
28.12.2016
20:49:24
лан запускаю и иду спать

это пиздец надолго)

Denis
28.12.2016
20:49:46
10^5 запусти

Это быстро

Johnnie
28.12.2016
20:50:01
не, ты чо

Zart
28.12.2016
20:50:05
в прошлый раз сколько было?

Denis
28.12.2016
20:50:07
Это секунда

Johnnie
28.12.2016
20:50:09
я до этого запускал 300

ждал полчаса

Denis
28.12.2016
20:50:18
Потому что квадрат

Zart
28.12.2016
20:50:19
@bladdon @zartsoft t1: 1332.5145938309997 t2: 808.875277266 t3: 134.11211553499925

Страница 1014 из 1885

Эта группа больше не существует Эта группа больше не существует