Aragaer
потому что нужно вернуть bool - True или False, а оператор != ровно это и делает
Aragaer
ну а partial(ne, 1) это ровно то же самое, что и lambda x: x != 1
Aragaer
естессно
Aragaer
не, можно сделать все векторно через нумпи
Максим 🇺🇦
Мне тип это для чего, задачку решаю, нужно найти все повторяющиеся элементы списка , и просумировать их.
Aragaer
а почему без цикла?
Tishka17
Потому он он не знает про set
Tishka17
Сложность небось пытается уменьшить
Максим 🇺🇦
Потому что нужна максимальная простота
Aragaer
что значит повторяющиеся?
Максим 🇺🇦
Больше 1
Aragaer
>>> teh_list = [1,2,3,4,5,1,2,3,4,5] >>> a = np.array(teh_list) >>> a[a!=1] array([2, 3, 4, 5, 2, 3, 4, 5])
Aragaer
вот, векторизация во все концы 8)
Aragaer
а что значит просуммировать?
Aragaer
ну вот список 1,2,1,2,3,4
Aragaer
какой должен быть результат? 6?
Максим 🇺🇦
найти суму всех повторяющихся элементов)
Aragaer
ну то есть шесть ответ
Максим 🇺🇦
4
Максим 🇺🇦
3 и 4 ведь только 1 раз встречаются
Максим 🇺🇦
суть задачки найти количество пар елементов
Максим 🇺🇦
это вроде бы и не сложно
Максим 🇺🇦
я вроде бы и сделал
Максим 🇺🇦
но сказали что можно сделать проще
Aragaer
ну 1 и 2 встречаются по 2 раза
Aragaer
1+2+1+2 = 6
Aragaer
так сумму или количество?
Aragaer
и вообще, какое исходное условие задачи? А то опять проблема XY
Максим 🇺🇦
Тип на словах это звучит как, найти все елементы a , розделить их на 2, забрать целую часть , и так с каждым елементом списка
Aragaer
условие скажи
Aragaer
вот какое изначально
Максим 🇺🇦
Найти количество пар всех елементов списка
Aragaer
то есть есть список
Максим 🇺🇦
в котором есть елементы
Aragaer
в котором некоторые элементы встречаются 2 раза, а другие встречаются только 1 раз
Максим 🇺🇦
2 и более раз
Aragaer
окей
Aragaer
что-то ровно 1 раз, что-то 2 и более
Максим 🇺🇦
да
Aragaer
что надо выдать в качестве ответа?
Максим 🇺🇦
Количество всех пар списка
Aragaer
1,1,1,1 - какой должен быть ответ?
Максим 🇺🇦
2
Максим 🇺🇦
2 пары
Aragaer
1,1,1,2 - какой тут?
Максим 🇺🇦
2 пары
Максим 🇺🇦
елемент 1 встречается 3 раза
Aragaer
тоже 2?
Максим 🇺🇦
3 / 2
Максим 🇺🇦
ой
Максим 🇺🇦
1
Максим 🇺🇦
лол
Максим 🇺🇦
соре
Aragaer
ок
Максим 🇺🇦
хД
Aragaer
>>> teh_list = [1,2,1,2,3,4] >>> sum(int(b/2) for _, b in Counter(teh_list).most_common())
Aragaer
вэлкам
Aragaer
а впрочем...
Aragaer
>>> sum(int(b/2) for b in Counter(teh_list).values()) 2
Aragaer
вот даже так
Aragaer
но без Counter тут делать особо нечего
Aragaer
а с Counter все становится очевидно
Максим 🇺🇦
использовать другие модули как то скучно хД
Aragaer
впрочем, можно ж и вообще в лоб seen = set() result = 0 for i in teh_list: if i in seen: result += 1 seen.remove(i) else: seen.add(i) print(result)
Anonymous
Как мне запустить одновременно несколько циклов for так, чтобы они не блокировали поток?
Максим 🇺🇦
Спасибо)
Aragaer
ну то есть это вообще вот очевидное решение
Максим 🇺🇦
А то ломал себе слегка голову хД
Aragaer
просто честно собираем пары
Aragaer
нашли пару - посчитали
Aragaer
последовательно, итеративненько
Максим 🇺🇦
У меня был подобный алгоритм но тип алгоритмом назвать это нельзя было)
khokm
https://python-scripts.com/threading
khokm
Только производительности оно не придаст
khokm
по сравнению с синглтред версией, когда все циклы у тебя шли бы один за другим