Дима
возможно тупой вопрос, но чем list от array отличается?
Главное отличие в том что все элементы листа связаны ссылками друг на друга, а потому он может лежать в памяти разрозненно: каждый элемент где то там. А массив лежит цельно в памяти:)
Vladimir
Ребят, знает кто приложение, где можно составить roadmap по типу такого ?
Ментальные карты называется. Программ уйма. Гугл...
Дима
Всегда думал что list более удобное сокращение для linked list :)
Igor
В питоне не array как такового
В питоне есть array но они только для однотипных элементов. Список может содержать разнотипные объекты
Igor
if stack равносильно if len(stack)>0
Виталик Голоенко
а .pop() шо делает?
Igor
убери плиз код и я там сделал вариант без yield в репле
Igor
а .pop() шо делает?
возвращает последний элемент и удаляет его из массива
Виталик Голоенко
в вашем питоне так разбираться долго
Дима
в вашем питоне так разбираться долго
Вопрос про yield и pop это даже не питон
Виталик Голоенко
та я знаю .pop() и js есть, я подумал что оно разное делает
Дима
Это общие знания программирования
Дима
Поп он на то и поп, ы любой церкви один
Виталик Голоенко
а yield да и в целом в генераторах я не могу разобраться зачем они
Igor
В питоне не array как такового
https://www.askpython.com/python/array/python-array-examples
Дима
а yield да и в целом в генераторах я не могу разобраться зачем они
Чтобы не кешировать последовательность а выводить её на лету
Виталик Голоенко
Вадим Гапонов
https://www.askpython.com/python/array/python-array-examples
Спасибо, я уже загуглил и почитал
Igor
а yield да и в целом в генераторах я не могу разобраться зачем они
генератор это паттерн. Генератор это прямой предок корутин.
Igor
думаешь мне это о чем-то говорит?)
они позволяют обрабатывать данные не выделяя память под массив результата. Своеобразный конвеер для обработки данных.
Дима
думаешь мне это о чем-то говорит?)
Ну тебе это должно сказать о том, что если ты хочешь вернуть последовательность объектов ты обычно все их пишешь в массив и потом даёшь этот массив как ответ. А генератор позволяет сэкономить на этом
Дима
В шарпе это очень юзается для работы с бд
Дима
Не знаю как в питоне
Igor
Генератор кстати очень крутая идея и написать ее ручками оооочень геморно.
Виталик Голоенко
ок обьясните мне пж это: https://learn.javascript.ru/async-iterators-generators
Виталик Голоенко
а то я все шо с асинхронностью связанно не понимаю
Виталик Голоенко
уже неделю вдалбливаю теорию
Igor
ок обьясните мне пж это: https://learn.javascript.ru/async-iterators-generators
так это как минимум странно не понимать асинхронщину не понимать итераторы и пытаться понять асинхронные итераторы :) Начни с итераторов хотя бы
Виталик Голоенко
та ваще нехочеца:) сложны слова какие-то, примеры не понятные, крч шляпа
Виталик Голоенко
а вообще мне js не нравится:) приехали
Дима
Дима
А тут хуяк, и чёт как то сложно)
Дима
А в том же шарпе это все понятнее
Виталик Голоенко
А тут хуяк, и чёт как то сложно)
та не говори, зачем фронтендеру который кнопочки стилизирует вот это все(
Дима
Питон просто на старте не даёт задуматься о том что важно, а чтобы понять сложные вещи потом надо все это знать
Дима
Как и js собственно
Виталик Голоенко
https://learn.javascript.ru/currying-partials вот еще тема не понятная депресуха крч
Дима
это ноги математики торчат :)
Такое кстати тоже есть в шарпе :D
Maksim Pozharskiy
Кстати первый раз недавно пришлось на практике применить каррирование - когда HOC компонент делал
Igor
Каррирование можно использовать довольно часто если знать что оно существует :) Если о таком не знаешь само собой и решение не придумаешь и даже не догадаешься загуглить. Это почему не работает "если мне будет нужно я загуглю"
Виталик Голоенко
Слишком рано пошёл значит на такое
так эти темы по очереди идут
Дима
так эти темы по очереди идут
Значит прошлые ты усвоил халтурно
Виталик Голоенко
Дима
скорее всего да
Как ты дошёл до асинхронгых итераторлв если не понял обычные?) Почему проскочить ту тему и пошёл дальше? НИЗЯ ТАК
Igor
Значит прошлые ты усвоил халтурно
Я бы не был столь радикален в суждениях. :) Тема сама по себе и с предыдущими не связанна. Это уже шаги к функциональщине. И они не всем одинаково хорошо заходят. Людям с мат базой кажется вообще само собой разумеющимся, а для некоторых взрыв мозга.
Дима
Я бы не был столь радикален в суждениях. :) Тема сама по себе и с предыдущими не связанна. Это уже шаги к функциональщине. И они не всем одинаково хорошо заходят. Людям с мат базой кажется вообще само собой разумеющимся, а для некоторых взрыв мозга.
Просто в шарпе чтобы поднять эту тему надо хорошо понимать делегаты и паттерн итератор, а чтобы понять их нужна база по ООП какая то. А в джэс все наверное чуть проще
Дима
я там говорил про каррирование.
А, понял. Ну опять таки же в моем любимом шарпе это делегаты, но не суть)) Наверное нужен хороший пример человеку дать, чтобы он поняд хотя бы зачем это
Виталик Голоенко
Igor
https://learn.javascript.ru/currying-partials вот еще тема не понятная депресуха крч
смысл каррирования в том что можно зафиксировать часть параметров функции "заранее" те у нас есть функция которая выводит log с параметрами формат даты и текст а в другом месте нам нужна функция log с параметрами только текст а формат даты мы берем из конфига тогда мы можем с помощью кариррования получить вторую функцию из первой просто зафиксировав первый параметр
Igor
нипонял(
идея частичного применения посмотри вики если не понятно погугли именно в таком контексте https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5
Andrii
нипонял(
У нас есть функция, которая складывает два числа. Из неё можно построить функцию, которая к одному числу прибавляет 10
Andrii
нипонял(
Но для начала лучше просто поиграться с функциями, которые в качестве аргументов принимают другие функции. Например, у массива есть функция forEach, туда можно передать какую-нить функцию печати
Artemy
нипонял(
Чеб приготовить функцию "варенье клубничное" нужны два параметра "сахар" и "ягода". Но при получении этих параметров тебе навалили столько "сахара" что хватит на тонны "варенья". Т.е. при следующей необходимости запустить функцию "клубничное варенье" тебе уже не надо получать параметр "сахар" он у тебя уже есть, нужен только параметр"ягода".
Andrii
return n + 10?
Немного не так. У нас есть function sum(a, b) { return a + b }
Andrii
Мы можем написать функции типа таких function add10(x) { return sum(10, x); } function add20(x) { return sum(20, x); }
Igor
Немного не так. У нас есть function sum(a, b) { return a + b }
%) эти наркоманы только в сахаре и клубнике понимают забей :)
Виталик Голоенко
э
Andrii
Неудобность в том, что у нас переменную, которую надо добавить (10, 20) неизвестна в момент написания (читается из базы)
Виталик Голоенко
Мы можем написать функции типа таких function add10(x) { return sum(10, x); } function add20(x) { return sum(20, x); }
так это разве не называется кол бек функция которая принимает другую функцию?
Andrii
Тогда function getAdder(v) { return function(x) { return sum(v, x); } }
Виталик Голоенко
а можете про замыкания еще рассказать?)
Дима
о, понял
В 90% случаев после этой фразы человек ничего не понял)
Дима
Ты сначала с каррированием разберись - попробуй на практике закрепить
Andrii
так это разве не называется кол бек функция которая принимает другую функцию?
Обычно аргумент, функция, которая передаётся, называется callback, но обычно если это не сильно распространено
Дима
так как ты хочешь все это выучить одним днем не получиться