Двач.hk не отвечает.
Вы видите копию треда, сохраненную 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы видите копию треда, сохраненную 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Тред, посвящённый языку программирования Питон, #73.
Предыдущий >>1512752 (OP)
ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat актуальность примерно 2015 года
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Очень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLK
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
Вопросы-ответы:
А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать? - Питон сам по себе очень хорошо задокументирован, и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги. - МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? - очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой, из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать - Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Предыдущий >>1512752 (OP)
ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat актуальность примерно 2015 года
Книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Очень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLK
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
Вопросы-ответы:
А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем - решать тебе, книга вредна не будет, то ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х? - Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать? - Питон сам по себе очень хорошо задокументирован, и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги. - МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? - очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х - У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой, из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать - Вот, пожалуйста, та же самая программа, но переработанная под язык Python http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
>>1391 (OP)
Сколько сейчас пайтон джун со знаниями и парой петпроектов на джанго, но без коммерческого опыта может получать в мск? Хотя бы 50-55 реально выбить?
Там где я живу 0 вакансий, думаю переехать ради опыта
Сколько сейчас пайтон джун со знаниями и парой петпроектов на джанго, но без коммерческого опыта может получать в мск? Хотя бы 50-55 реально выбить?
Там где я живу 0 вакансий, думаю переехать ради опыта
>>1391 (OP)
Ну зачем, нормально же общались!
Ну зачем, нормально же общались!
>>1394
Двачую вопрос и призываю джуна ответившего мне в прошлом треде.
Мой вопрос, что спрашивали на собесе и что он конкретно на работе делает.
Нужно ли джуну дрочить синтаксис углубленно и окончательно ломать себе мозги ИЛИ лучше задрочить конкретные конструкции/идиомы тех задач что джун будет непосредственно решать.
Двачую вопрос и призываю джуна ответившего мне в прошлом треде.
Мой вопрос, что спрашивали на собесе и что он конкретно на работе делает.
Нужно ли джуну дрочить синтаксис углубленно и окончательно ломать себе мозги ИЛИ лучше задрочить конкретные конструкции/идиомы тех задач что джун будет непосредственно решать.
112 Кб, 659x472
Как в 2020 проще всего обойти директирию с поддиректориями? Можно без сортировки.
Как вообще принято покрывать юнит-тестами функции?
Вот, например,
если у меня есть функция, которая разбивает строку по запятым на спиок слов,
я точно знаю, что этих слов должно быть 3
какие тесты я должен для неё прописать ?
Допустим:
Проверка на правильный тип данных возвращаемого значения
Проверка на правильную работу функции (забить выходной список вручную для небольшого примера)
Проверка на правильное количество возвращаемых элементов в списке
Я немного упростил свою реальную функцию, у меня еще добавятся тесты для разных специфичных случаев,
но есть ли еще какие-то основные тесты, которые я упустил?
Вот, например,
если у меня есть функция, которая разбивает строку по запятым на спиок слов,
я точно знаю, что этих слов должно быть 3
какие тесты я должен для неё прописать ?
Допустим:
Проверка на правильный тип данных возвращаемого значения
Проверка на правильную работу функции (забить выходной список вручную для небольшого примера)
Проверка на правильное количество возвращаемых элементов в списке
Я немного упростил свою реальную функцию, у меня еще добавятся тесты для разных специфичных случаев,
но есть ли еще какие-то основные тесты, которые я упустил?
>>1512
И еще, если,допустим, делаешь собственный парсер и оформляешь его , как питоновский пакет,
нужно ли там прописывать собственные исключения, например для случая, когда на вход подана строка неправильного формата?
Или достаточно выбрасывать в коде уже существующий тип исключения, например ValueError, написав лишь там своё сообщение ?
И еще, если,допустим, делаешь собственный парсер и оформляешь его , как питоновский пакет,
нужно ли там прописывать собственные исключения, например для случая, когда на вход подана строка неправильного формата?
Или достаточно выбрасывать в коде уже существующий тип исключения, например ValueError, написав лишь там своё сообщение ?
>>1547
def walk(top, topdown=True, onerror=None, followlinks=False):
"""Directory tree generator.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
dirpath is a string, the path to the directory. dirnames is a list of
the names of the subdirectories in dirpath (excluding '.' and '..').
filenames is a list of the names of the non-directory files in dirpath.
Note that the names in the lists are just names, with no path components.
To get a full path (which begins with top) to a file or directory in
dirpath, do os.path.join(dirpath, name).
If optional arg 'topdown' is true or not specified, the triple for a
directory is generated before the triples for any of its subdirectories
(directories are generated top down). If topdown is false, the triple
for a directory is generated after the triples for all of its
subdirectories (directories are generated bottom up).
When topdown is true, the caller can modify the dirnames list in-place
(e.g., via del or slice assignment), and walk will only recurse into the
subdirectories whose names remain in dirnames; this can be used to prune the
search, or to impose a specific order of visiting. Modifying dirnames when
topdown is false is ineffective, since the directories in dirnames have
already been generated by the time dirnames itself is generated. No matter
the value of topdown, the list of subdirectories is retrieved before the
tuples for the directory and its subdirectories are generated.
By default errors from the os.listdir() call are ignored. If
optional arg 'onerror' is specified, it should be a function; it
will be called with one argument, an os.error instance. It can
report the error to continue with the walk, or raise the exception
to abort the walk. Note that the filename is available as the
filename attribute of the exception object.
By default, os.walk does not follow symbolic links to subdirectories on
systems that support them. In order to get this functionality, set the
optional argument 'followlinks' to true.
Caution: if you pass a relative pathname for top, don't change the
current working directory between resumptions of walk. walk never
changes the current directory, and assumes that the client doesn't
either.
Example:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
"""
islink, join, isdir = path.islink, path.join, path.isdir
# We may not have read permission for top, in which case we can't
# get a list of the files the directory contains. os.path.walk
# always suppressed the exception then, rather than blow up for a
# minor reason when (say) a thousand readable directories are still
# left to visit. That logic is copied here.
try:
# Note that listdir and error are globals in this module due
# to earlier import-*.
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
if topdown:
yield top, dirs, nondirs
for name in dirs:
new_path = join(top, name)
if followlinks or not islink(new_path):
for x in walk(new_path, topdown, onerror, followlinks):
yield x
if not topdown:
yield top, dirs, nondirs
Тут рекурсия, педорас.
def walk(top, topdown=True, onerror=None, followlinks=False):
"""Directory tree generator.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
dirpath is a string, the path to the directory. dirnames is a list of
the names of the subdirectories in dirpath (excluding '.' and '..').
filenames is a list of the names of the non-directory files in dirpath.
Note that the names in the lists are just names, with no path components.
To get a full path (which begins with top) to a file or directory in
dirpath, do os.path.join(dirpath, name).
If optional arg 'topdown' is true or not specified, the triple for a
directory is generated before the triples for any of its subdirectories
(directories are generated top down). If topdown is false, the triple
for a directory is generated after the triples for all of its
subdirectories (directories are generated bottom up).
When topdown is true, the caller can modify the dirnames list in-place
(e.g., via del or slice assignment), and walk will only recurse into the
subdirectories whose names remain in dirnames; this can be used to prune the
search, or to impose a specific order of visiting. Modifying dirnames when
topdown is false is ineffective, since the directories in dirnames have
already been generated by the time dirnames itself is generated. No matter
the value of topdown, the list of subdirectories is retrieved before the
tuples for the directory and its subdirectories are generated.
By default errors from the os.listdir() call are ignored. If
optional arg 'onerror' is specified, it should be a function; it
will be called with one argument, an os.error instance. It can
report the error to continue with the walk, or raise the exception
to abort the walk. Note that the filename is available as the
filename attribute of the exception object.
By default, os.walk does not follow symbolic links to subdirectories on
systems that support them. In order to get this functionality, set the
optional argument 'followlinks' to true.
Caution: if you pass a relative pathname for top, don't change the
current working directory between resumptions of walk. walk never
changes the current directory, and assumes that the client doesn't
either.
Example:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
"""
islink, join, isdir = path.islink, path.join, path.isdir
# We may not have read permission for top, in which case we can't
# get a list of the files the directory contains. os.path.walk
# always suppressed the exception then, rather than blow up for a
# minor reason when (say) a thousand readable directories are still
# left to visit. That logic is copied here.
try:
# Note that listdir and error are globals in this module due
# to earlier import-*.
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
if topdown:
yield top, dirs, nondirs
for name in dirs:
new_path = join(top, name)
if followlinks or not islink(new_path):
for x in walk(new_path, topdown, onerror, followlinks):
yield x
if not topdown:
yield top, dirs, nondirs
Тут рекурсия, педорас.
>>1547
def walk(top, topdown=True, onerror=None, followlinks=False):
"""Directory tree generator.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
dirpath is a string, the path to the directory. dirnames is a list of
the names of the subdirectories in dirpath (excluding '.' and '..').
filenames is a list of the names of the non-directory files in dirpath.
Note that the names in the lists are just names, with no path components.
To get a full path (which begins with top) to a file or directory in
dirpath, do os.path.join(dirpath, name).
If optional arg 'topdown' is true or not specified, the triple for a
directory is generated before the triples for any of its subdirectories
(directories are generated top down). If topdown is false, the triple
for a directory is generated after the triples for all of its
subdirectories (directories are generated bottom up).
When topdown is true, the caller can modify the dirnames list in-place
(e.g., via del or slice assignment), and walk will only recurse into the
subdirectories whose names remain in dirnames; this can be used to prune the
search, or to impose a specific order of visiting. Modifying dirnames when
topdown is false is ineffective, since the directories in dirnames have
already been generated by the time dirnames itself is generated. No matter
the value of topdown, the list of subdirectories is retrieved before the
tuples for the directory and its subdirectories are generated.
By default errors from the os.listdir() call are ignored. If
optional arg 'onerror' is specified, it should be a function; it
will be called with one argument, an os.error instance. It can
report the error to continue with the walk, or raise the exception
to abort the walk. Note that the filename is available as the
filename attribute of the exception object.
By default, os.walk does not follow symbolic links to subdirectories on
systems that support them. In order to get this functionality, set the
optional argument 'followlinks' to true.
Caution: if you pass a relative pathname for top, don't change the
current working directory between resumptions of walk. walk never
changes the current directory, and assumes that the client doesn't
either.
Example:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
"""
islink, join, isdir = path.islink, path.join, path.isdir
# We may not have read permission for top, in which case we can't
# get a list of the files the directory contains. os.path.walk
# always suppressed the exception then, rather than blow up for a
# minor reason when (say) a thousand readable directories are still
# left to visit. That logic is copied here.
try:
# Note that listdir and error are globals in this module due
# to earlier import-*.
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
if topdown:
yield top, dirs, nondirs
for name in dirs:
new_path = join(top, name)
if followlinks or not islink(new_path):
for x in walk(new_path, topdown, onerror, followlinks):
yield x
if not topdown:
yield top, dirs, nondirs
Тут рекурсия, педорас.
def walk(top, topdown=True, onerror=None, followlinks=False):
"""Directory tree generator.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
dirpath is a string, the path to the directory. dirnames is a list of
the names of the subdirectories in dirpath (excluding '.' and '..').
filenames is a list of the names of the non-directory files in dirpath.
Note that the names in the lists are just names, with no path components.
To get a full path (which begins with top) to a file or directory in
dirpath, do os.path.join(dirpath, name).
If optional arg 'topdown' is true or not specified, the triple for a
directory is generated before the triples for any of its subdirectories
(directories are generated top down). If topdown is false, the triple
for a directory is generated after the triples for all of its
subdirectories (directories are generated bottom up).
When topdown is true, the caller can modify the dirnames list in-place
(e.g., via del or slice assignment), and walk will only recurse into the
subdirectories whose names remain in dirnames; this can be used to prune the
search, or to impose a specific order of visiting. Modifying dirnames when
topdown is false is ineffective, since the directories in dirnames have
already been generated by the time dirnames itself is generated. No matter
the value of topdown, the list of subdirectories is retrieved before the
tuples for the directory and its subdirectories are generated.
By default errors from the os.listdir() call are ignored. If
optional arg 'onerror' is specified, it should be a function; it
will be called with one argument, an os.error instance. It can
report the error to continue with the walk, or raise the exception
to abort the walk. Note that the filename is available as the
filename attribute of the exception object.
By default, os.walk does not follow symbolic links to subdirectories on
systems that support them. In order to get this functionality, set the
optional argument 'followlinks' to true.
Caution: if you pass a relative pathname for top, don't change the
current working directory between resumptions of walk. walk never
changes the current directory, and assumes that the client doesn't
either.
Example:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories
"""
islink, join, isdir = path.islink, path.join, path.isdir
# We may not have read permission for top, in which case we can't
# get a list of the files the directory contains. os.path.walk
# always suppressed the exception then, rather than blow up for a
# minor reason when (say) a thousand readable directories are still
# left to visit. That logic is copied here.
try:
# Note that listdir and error are globals in this module due
# to earlier import-*.
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
if topdown:
yield top, dirs, nondirs
for name in dirs:
new_path = join(top, name)
if followlinks or not islink(new_path):
for x in walk(new_path, topdown, onerror, followlinks):
yield x
if not topdown:
yield top, dirs, nondirs
Тут рекурсия, педорас.
>>1720
а всё не нужно. понял, просто с переводом проебался.
а всё не нужно. понял, просто с переводом проебался.
Для работы с данными одной программы очень удобно реализован вывод в дата фреймы pandas. В книжке Numerical python познакомился с рядами и массивами numpy. Есть хорошая книга или другая обучающая литература по pandas? Документация разработчика просто пугает объемом свыше 1000 страниц.
>>2156
Нет.
Нет.
399 Кб, 1365x2048
В какой области лучше начать делать пет проджект, что бы подтянуть базу знаний на практике? Желательно с минимальным использованием библиотек. Т.е. что бы область к этому располагала.
Write a function count that returns the number of occurrences of target in a nested list
аноны, переведите, пожалуйста, задание не понимаю что хотят
аноны, переведите, пожалуйста, задание не понимаю что хотят
>>2328
короче если мои навыки ангельского мне не пиздят то ты должен написать функцию def count которая считает количество вхождений некоторого заданного значения в (nested ?) списке и в следующий раз воспользоваться гугл переводчиком который такие предложения переводить уже умеет
короче если мои навыки ангельского мне не пиздят то ты должен написать функцию def count которая считает количество вхождений некоторого заданного значения в (nested ?) списке и в следующий раз воспользоваться гугл переводчиком который такие предложения переводить уже умеет
>>2156
Спасибо.
Спасибо.
>>2328
Напишите функцию count, которая возвращает количество совпадений (вхождений) в целевом вложенном списке.
Вложенный список, это когда внутри списка есть еще списки.
a = [['a', 'b', 'c'], [3, 4, 5], ['ji','ri','do']
По сути задача на for/ while и if, elif, else, in.
Напишите функцию count, которая возвращает количество совпадений (вхождений) в целевом вложенном списке.
Вложенный список, это когда внутри списка есть еще списки.
a = [['a', 'b', 'c'], [3, 4, 5], ['ji','ri','do']
По сути задача на for/ while и if, elif, else, in.
>>2325
В какой области хочешь знания поднятунть, в такой и делай?
В какой области хочешь знания поднятунть, в такой и делай?
>>2417
нет, спасибо. я знаю что такое вложенныq список и что они хотят рекурсивную программу. я не понимаю вот этого
я не понимаю что это означает, скажи, пожалуйста. не понимаю смысл
нет, спасибо. я знаю что такое вложенныq список и что они хотят рекурсивную программу. я не понимаю вот этого
>которая возвращает количество совпадений (вхождений) в целевом вложенном списке
я не понимаю что это означает, скажи, пожалуйста. не понимаю смысл
>>2062
А что конкретно надо сделать с этим датафреймом?
А что конкретно надо сделать с этим датафреймом?
>>2417
что такое вхождения?
что такое целевой вложенный список? вернее вложенный знаю, а целевой это как? какой-то определённый. дайте, пожалуйста подробный пример этого всего я не понимаю
что такое вхождения?
что такое целевой вложенный список? вернее вложенный знаю, а целевой это как? какой-то определённый. дайте, пожалуйста подробный пример этого всего я не понимаю
>>2626
а понял. спасибо большое. дошло до меня. но последнее уточнение
вот [5,3,[3,4]] нужно посчитать цифру три только во вложенном списке или в целом?
а понял. спасибо большое. дошло до меня. но последнее уточнение
вот [5,3,[3,4]] нужно посчитать цифру три только во вложенном списке или в целом?
>>1518484
Пиздуй на мою прежнюю работку к дедам, прогающим на asm-е. Тебе там понравится
> олдфажного сокрещенного синтаксиса
Пиздуй на мою прежнюю работку к дедам, прогающим на asm-е. Тебе там понравится
3 Кб, 232x139
>>2671
L это список
A это искомое число
c считает кол-во сколько прза случилось число в списке. могу сделать и чисто чтобы во вложеном искал на определённой глубине рекурсии. блять ну почему эти условия заданий непонятные всё время загнут какую-то хуйню типа "сколько вхождений в целевом вложенном списке?" что блядь?
L это список
A это искомое число
c считает кол-во сколько прза случилось число в списке. могу сделать и чисто чтобы во вложеном искал на определённой глубине рекурсии. блять ну почему эти условия заданий непонятные всё время загнут какую-то хуйню типа "сколько вхождений в целевом вложенном списке?" что блядь?
>>2629
Откуда я знаю, смотри примеры, если есть. По идее надо искать во всём списке, нигде не сказано, что только во вложенных.
Откуда я знаю, смотри примеры, если есть. По идее надо искать во всём списке, нигде не сказано, что только во вложенных.
>>2673
Ты побольше переводы местных ретардов, не способных в язык, слушай.
>в целевом вложенном списке
Ты побольше переводы местных ретардов, не способных в язык, слушай.
>>2682
ну вот я >>2671 код написал.
Так в том то и проблема блядь в этой книге авторы любят загнуть что-то такое сложное на словах и не предоставить примеры. Там нет примеров, одна строчка текста как задача и всё. Регулярно сюда за помощью обращаюсь. Заебала эта книжка с её охуительными формулировками уже.
ну вот я >>2671 код написал.
Так в том то и проблема блядь в этой книге авторы любят загнуть что-то такое сложное на словах и не предоставить примеры. Там нет примеров, одна строчка текста как задача и всё. Регулярно сюда за помощью обращаюсь. Заебала эта книжка с её охуительными формулировками уже.
78 Кб, 700x514
Так, котаны. Начал использовать R но проблевался от неконсистентности. Уже было начал учить julia, но эти ваши индексы с 1, ух. Сдался и решил пойти мейнстримным путем. Кодить умеют, монады не пугают. Подскажите какую книжку (на английском) лучше взять? Смотрю в сторону Python for data analysis
>>2715
типичный пограмизд)
типичный пограмизд)
>>2417
из условий не понятно, какая у тебя степени вложенность, предположим что первая, это самый легкий вариант:
from collections import Counter
your_list = [[1,2],[3,4], [2,3], [2,3,54,1,2,43,12], [3,1]]
flatten_list = sum(your_list, [])
print(Counter(flatten_list)) # Counter({2: 4, 3: 4, 1: 3, 4: 1, 54: 1, 43: 1, 12: 1})
из условий не понятно, какая у тебя степени вложенность, предположим что первая, это самый легкий вариант:
from collections import Counter
your_list = [[1,2],[3,4], [2,3], [2,3,54,1,2,43,12], [3,1]]
flatten_list = sum(your_list, [])
print(Counter(flatten_list)) # Counter({2: 4, 3: 4, 1: 3, 4: 1, 54: 1, 43: 1, 12: 1})
>>2856
Это считает количество всех элементов во всем листе со вложенными листами, если тебе нужно только в одном из вложенных и там гарантированно нет второго уровня вложения, то просто по индексу делай.
Вообще нихуя не понятно из этого условия, что делать, либо ты сам его сам так сформулировал (считай себя составителем задачи и смотри дальше), либо тот, кто составлял задачу - даун.
Это считает количество всех элементов во всем листе со вложенными листами, если тебе нужно только в одном из вложенных и там гарантированно нет второго уровня вложения, то просто по индексу делай.
Вообще нихуя не понятно из этого условия, что делать, либо ты сам его сам так сформулировал (считай себя составителем задачи и смотри дальше), либо тот, кто составлял задачу - даун.
>>2671
тип надо проверять так - isinstance(instance, type)
вместо второго if должно быть elif
Ну и по условию не понятно, что вообще надо делать, да и по твоему коду тоже не понятно ничего.
Приведи пример вводного листа и результат функции, наверняка в твоей книжке это дается.
тип надо проверять так - isinstance(instance, type)
вместо второго if должно быть elif
Ну и по условию не понятно, что вообще надо делать, да и по твоему коду тоже не понятно ничего.
Приведи пример вводного листа и результат функции, наверняка в твоей книжке это дается.
>>2062
У них довольно неплохая документация на сайте. Для быстрого вхождения в тему можешь почитать это - https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html, а потом уже гуглить то, что нужно конкретно тебе.
У них довольно неплохая документация на сайте. Для быстрого вхождения в тему можешь почитать это - https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html, а потом уже гуглить то, что нужно конкретно тебе.
>>2671
https://github.com/30-seconds/30-seconds-of-python/blob/master/snippets/deep_flatten.md
Кстати вот универсальный метод сглаживания листа, после этого ты получаешь просто лист со значениями и считаешь там повторы или что тебе нужно. Если ты хочешь пилить свой велосипед и отказываешься юзать collections.Counters, то земля тебе пухом, делай лучше через словарь все это дело.
Типа так:
counter_dict = dict()
for elem in flatten_list:
....counter_dict[elem]+=1 if counter_dict.get(elem) is not None else counter_dict[elem]=1
count = len([v for v in counter_dict.values() if v > 1])
https://github.com/30-seconds/30-seconds-of-python/blob/master/snippets/deep_flatten.md
Кстати вот универсальный метод сглаживания листа, после этого ты получаешь просто лист со значениями и считаешь там повторы или что тебе нужно. Если ты хочешь пилить свой велосипед и отказываешься юзать collections.Counters, то земля тебе пухом, делай лучше через словарь все это дело.
Типа так:
counter_dict = dict()
for elem in flatten_list:
....counter_dict[elem]+=1 if counter_dict.get(elem) is not None else counter_dict[elem]=1
count = len([v for v in counter_dict.values() if v > 1])
>>2873
понял, извиняюсь
понял, извиняюсь
Решил поизучать питон. Или пайтон. Поставил среду. Запустил. А она как давай память жрать. В программке 10 строк и 600 мб в памяти. Это нормально?
>>2969
покажи код
покажи код
>>2969
jetbrains? Используй IDLE.
jetbrains? Используй IDLE.
>>2969
eclipse + pyDev
eclipse + pyDev
>>1394
>>1441
Отвечаю вам обоим аноны. Вкатился летом в бекенд джуниор питон разработчиком. Работаю уже 5 месяц.
Был всего на двух собесах. Надо знать основы языка ну и основы фреймворка который будешь юзать, например Django или Flask.
Чтобы меньше было вопросов на собеседовании, лучше иметь какой нибудь проект на гите, ну или хотя бы с собой принести на ноутбуке, но лучше на гите, так как на первом собесе ноутбук не пропустила охрана и тимлид ебал меня вопросами про слои БД и всякую ебалу, на втором собесе показал код и вопросы были по моему коду.
ЗП сейчас 50к, не ДС или ДС2, то есть для моего города вполне нормально.
Работать в целом не сложно, так как любая задача уже решена на SOF. Сложно когда блять тупой менеджер называет сроки не посоветовавшись с тобой, а потом пытается нагнуть работать в выходные. Со временем научился слать нахуй менеджера, ну или говорю что постараюсь, а сам нихуя не делаю на выходных, напишу пару строк и рассказываю сказки как спал всего 3 часа и спасал мир, в итоге менеджеру приходится сроки подгонять под мои. Проект старый и большой, документации нету, я в нём немного разобрался и поэтому могу диктовать свои условия, несмотря на то что, я нету даже полгода стажа, уже поступают предложения на собес, летом буду искать удаленку, хочу пару лет пожить на море.
>>1441
Отвечаю вам обоим аноны. Вкатился летом в бекенд джуниор питон разработчиком. Работаю уже 5 месяц.
Был всего на двух собесах. Надо знать основы языка ну и основы фреймворка который будешь юзать, например Django или Flask.
Чтобы меньше было вопросов на собеседовании, лучше иметь какой нибудь проект на гите, ну или хотя бы с собой принести на ноутбуке, но лучше на гите, так как на первом собесе ноутбук не пропустила охрана и тимлид ебал меня вопросами про слои БД и всякую ебалу, на втором собесе показал код и вопросы были по моему коду.
ЗП сейчас 50к, не ДС или ДС2, то есть для моего города вполне нормально.
Работать в целом не сложно, так как любая задача уже решена на SOF. Сложно когда блять тупой менеджер называет сроки не посоветовавшись с тобой, а потом пытается нагнуть работать в выходные. Со временем научился слать нахуй менеджера, ну или говорю что постараюсь, а сам нихуя не делаю на выходных, напишу пару строк и рассказываю сказки как спал всего 3 часа и спасал мир, в итоге менеджеру приходится сроки подгонять под мои. Проект старый и большой, документации нету, я в нём немного разобрался и поэтому могу диктовать свои условия, несмотря на то что, я нету даже полгода стажа, уже поступают предложения на собес, летом буду искать удаленку, хочу пару лет пожить на море.
>>3064
Спасибо за развернутый ответ. Скажи, можешь ли ты с нуля написать что то сложное, на чистом питоне? Насколько спрашивают основы языка? Можно быть макакой работающей только с готовыми решениями из библиотек?
Спасибо за развернутый ответ. Скажи, можешь ли ты с нуля написать что то сложное, на чистом питоне? Насколько спрашивают основы языка? Можно быть макакой работающей только с готовыми решениями из библиотек?
кто какой редактор/иде использует для питона?попробовал пайчарм,комп чуть не сгорел,вообще не понимаю что он там внутри делает чтоб так память сжирать
>>3092
у вскода иногда не работает автокомплит,он как будто не загрузил еще модуль,то ли что то там внутри ломается, потому что он иногда хорошо автокомплитит
у вскода иногда не работает автокомплит,он как будто не загрузил еще модуль,то ли что то там внутри ломается, потому что он иногда хорошо автокомплитит
>>3092
Саблайм с анакондой
Саблайм с анакондой
>>3092
Thonny использую, не пишу ничего сложнее парсеров, так что мне хватает, но для каких-то комплексных проектов его будет мало
Thonny использую, не пишу ничего сложнее парсеров, так что мне хватает, но для каких-то комплексных проектов его будет мало
>>3092
Так это же жидбрейнз
Так это же жидбрейнз
Я тут работаю над небольшим проектом. По сути это скрейпер, который работает 24/7 и каждые пару минут обновляет базу данных, когда пользовательно открывает главную страничку сайта, информация с бд отоборажается в виде таблицы. Пишу на Python+Flask+PostgreSQL. Возник вопрос. Стоит ли переместить парсер в отдельную программу (пакет)? Хорошая ли это практика? Хуй знает, как такое гуглить.
>>2877
Работа со словарями это какой-то мрак, прочитал в нескольких разных курсах про них так ничего и не понял как это всё синтаксически оформлять, перебирать, юзать в циклах.
Работа со словарями это какой-то мрак, прочитал в нескольких разных курсах про них так ничего и не понял как это всё синтаксически оформлять, перебирать, юзать в циклах.
>>3210
А у тебя как сейчас запущен парсер?
А у тебя как сейчас запущен парсер?
>>3092
Использует жабу вместо плюсов.
> вообще не понимаю что он там внутри делает чтоб так память сжирать
Использует жабу вместо плюсов.
>>3271
По идее словари нужны были не для перебора изначально, но когда начал гарантироваться порядок все немного изменилось. Там вроде все элементарно же, чего не понял то?
test_dict = {1:10, 2:2.0, 3:'N'}
for element in test_dict:
....print(element)
# 1 2 3
for element in test_dict.keys():
....print(element)
# 1 2 3
for element in test_dict.values():
....print(element)
# 10 2.0 N
for key, value in test_dict.items():
....print(key, value)
# (1, 10) (2, 2.0) (3, N)
print(list(test_dict.keys())) # [1, 2, 3]
print({v:k for (k,v) in test_dict.items()}) # {10:1, 2.0:2, "N":3}
test_dict[2] = 'two'
print(test_dict) # {1:10, 2:'two', 3:'N'}
test_dict[6] # value error
test_dict[6] = 6
print(test_dict) # {1:10, 2:'two', 3:'N', 6:6}
По идее словари нужны были не для перебора изначально, но когда начал гарантироваться порядок все немного изменилось. Там вроде все элементарно же, чего не понял то?
test_dict = {1:10, 2:2.0, 3:'N'}
for element in test_dict:
....print(element)
# 1 2 3
for element in test_dict.keys():
....print(element)
# 1 2 3
for element in test_dict.values():
....print(element)
# 10 2.0 N
for key, value in test_dict.items():
....print(key, value)
# (1, 10) (2, 2.0) (3, N)
print(list(test_dict.keys())) # [1, 2, 3]
print({v:k for (k,v) in test_dict.items()}) # {10:1, 2.0:2, "N":3}
test_dict[2] = 'two'
print(test_dict) # {1:10, 2:'two', 3:'N'}
test_dict[6] # value error
test_dict[6] = 6
print(test_dict) # {1:10, 2:'two', 3:'N', 6:6}
>>3271
По идее словари нужны были не для перебора изначально, но когда начал гарантироваться порядок все немного изменилось. Там вроде все элементарно же, чего не понял то?
test_dict = {1:10, 2:2.0, 3:'N'}
for element in test_dict:
....print(element)
# 1 2 3
for element in test_dict.keys():
....print(element)
# 1 2 3
for element in test_dict.values():
....print(element)
# 10 2.0 N
for key, value in test_dict.items():
....print(key, value)
# (1, 10) (2, 2.0) (3, N)
print(list(test_dict.keys())) # [1, 2, 3]
print({v:k for (k,v) in test_dict.items()}) # {10:1, 2.0:2, "N":3}
test_dict[2] = 'two'
print(test_dict) # {1:10, 2:'two', 3:'N'}
test_dict[6] # value error
test_dict[6] = 6
print(test_dict) # {1:10, 2:'two', 3:'N', 6:6}
По идее словари нужны были не для перебора изначально, но когда начал гарантироваться порядок все немного изменилось. Там вроде все элементарно же, чего не понял то?
test_dict = {1:10, 2:2.0, 3:'N'}
for element in test_dict:
....print(element)
# 1 2 3
for element in test_dict.keys():
....print(element)
# 1 2 3
for element in test_dict.values():
....print(element)
# 10 2.0 N
for key, value in test_dict.items():
....print(key, value)
# (1, 10) (2, 2.0) (3, N)
print(list(test_dict.keys())) # [1, 2, 3]
print({v:k for (k,v) in test_dict.items()}) # {10:1, 2.0:2, "N":3}
test_dict[2] = 'two'
print(test_dict) # {1:10, 2:'two', 3:'N'}
test_dict[6] # value error
test_dict[6] = 6
print(test_dict) # {1:10, 2:'two', 3:'N', 6:6}
Анонасы, не подскажите, как завести python3.x на notepad++? Чтобы с автодополнением и по красоте было, перепробовал много вариантов, но так и не смог привинтить хоть сколько-то нормальное дополнение.
>>3091
Сложное на чистом питоне? Думаю можно, но зачем? Сейчас куча библиотек, которые облегчают жизнь, не знаю как в крутых компаниях типа Гугл, но по рынку 90% это создание веб приложении, а значит Django/Flask, кое где нужны знания докера или celery + rabbit MQ/reddis, но это уже на мидла, советую потратить время на изучение Django + DRF, толку больше будет, ну и создай себе бложик на Джанго, почти туда чему научился, в итоге и тебя польза и от работодателя плюс
Мимо от анон, которому ты отвечал
Сложное на чистом питоне? Думаю можно, но зачем? Сейчас куча библиотек, которые облегчают жизнь, не знаю как в крутых компаниях типа Гугл, но по рынку 90% это создание веб приложении, а значит Django/Flask, кое где нужны знания докера или celery + rabbit MQ/reddis, но это уже на мидла, советую потратить время на изучение Django + DRF, толку больше будет, ну и создай себе бложик на Джанго, почти туда чему научился, в итоге и тебя польза и от работодателя плюс
Мимо от анон, которому ты отвечал
>>3430
95% времени ты просто делаешь аутлайн и вешаешь TODO на итемы, так что не сложнее маркдауна.
95% времени ты просто делаешь аутлайн и вешаешь TODO на итемы, так что не сложнее маркдауна.
>>3434
Там и описания нет. Как можно найти модуль, если знаешь лишь как он вызывается?
from commander.commander import Commander
И что мне качать? commander.commander?
Там и описания нет. Как можно найти модуль, если знаешь лишь как он вызывается?
from commander.commander import Commander
И что мне качать? commander.commander?
22 Кб, 759x150
аноны, как распечатать список в таком виде? что бы он был и списком и чтобы каждый элемент столбиком был. заебала эта книга со своими охуительными условиями каждая задача мне мозг пол дня выносит
>>3447
хотя впрочем не нужно. авторы просто мудазвоны. я сделал обычный принт построчный, один хрен в списке слеши адресов удавиваются. не знаю каким местом авторы думали когда подобный высер в условия толкали
хотя впрочем не нужно. авторы просто мудазвоны. я сделал обычный принт построчный, один хрен в списке слеши адресов удавиваются. не знаю каким местом авторы думали когда подобный высер в условия толкали
>>3448
Я похоже не то находил, извини.
Если ты пишешь какого-нибудь ссаного бота для вконтактика, вот какой-то коммандер:
https://github.com/AppLoidx/vk_bot
Я похоже не то находил, извини.
Если ты пишешь какого-нибудь ссаного бота для вконтактика, вот какой-то коммандер:
https://github.com/AppLoidx/vk_bot
>>3461
Спасибо!
Спасибо!
>>3460
How to Think Like a Computer Scientist: Learning with Python 3 Documentation, Release 3rdEdition
How to Think Like a Computer Scientist: Learning with Python 3 Documentation, Release 3rdEdition
>>3461
Блять. Почему нельзя было его закинуть в Pypl или запилить одним файлом. И как теперь эту ебанину заставить работать.
Блять. Почему нельзя было его закинуть в Pypl или запилить одним файлом. И как теперь эту ебанину заставить работать.
Поясните как работают ограничения рекурсии? Почему при значении 1, происходит ашь 12 рекурсий. В то время как при значении 100 доходить только до 87. Я уже весь мозг сломал.
>>3496
вот скрины анонам. извиняюсь. так будет понятнее. почему такие выводы?
вот скрины анонам. извиняюсь. так будет понятнее. почему такие выводы?
34 Кб, 1095x286
Сап, анон, помоги построить структуру пикрил. Я смог сделать только Бренд и Товар. Категорию я сделал ручками, то есть при создании нового бренда приходится в url ручками прописывать filter(brand__contains=Apple, например). Как сделать так, чтобы можно было прописать все через слаг и у меня через слаг фильтровались модели конкретной категории? причем чтобы можно было добавить бренд через админ панель и ничего в код не дописывать? получается я могу делать связку ModelListView-ModelDetailView, а как делать связку BrandListView-ModelListView-ModelDetailView.
Предположим мне на сервер надо послать несколько json'ов, один из которых содержит флаг, который должен быть установлен на сервере, а остальные собственно обрабатываемую информацию.
Как это смоделировать во фласке?
Надо ли под первый тип (установка флага) и второй тип (передача данных) заводить отдельные процессы?
Или всё делается в одном?
Как это смоделировать во фласке?
Надо ли под первый тип (установка флага) и второй тип (передача данных) заводить отдельные процессы?
Или всё делается в одном?
>>3538
О, снова ты.
Тупо послать несколько жсонов подряд, сервер последовательно их обработает. Наткнувшись в первом жсоне на флаг, он у себя это запомнит. Всё в одном процессе.
> смоделировать
О, снова ты.
Тупо послать несколько жсонов подряд, сервер последовательно их обработает. Наткнувшись в первом жсоне на флаг, он у себя это запомнит. Всё в одном процессе.
>>3570
Да, выхожу на связь.
Ну соответственно, на сервере надо будет написать отдельную функцию, чтобы флаг принимала?
Да, выхожу на связь.
Ну соответственно, на сервере надо будет написать отдельную функцию, чтобы флаг принимала?
>>3579
Можно и не писать. Достаточно условия:
mydata = фласк.request.json
if "flag" in mydata:
__store_flag_somewhere(mydata["flag"])
...
Можно и не писать. Достаточно условия:
mydata = фласк.request.json
if "flag" in mydata:
__store_flag_somewhere(mydata["flag"])
...
>>3538
Делаешь два типа данных, один с флагом, другой без, делаешь один общий интерфейс который они имплементируют, делаешь апи эндпойнт который принимает список с типом этого интерфейса, делаешь одну функцию которая обрабатывает тип без флага, вторую - как композицию первого + обработчик флага.
Делаешь два типа данных, один с флагом, другой без, делаешь один общий интерфейс который они имплементируют, делаешь апи эндпойнт который принимает список с типом этого интерфейса, делаешь одну функцию которая обрабатывает тип без флага, вторую - как композицию первого + обработчик флага.
>>3602
Хм... Звучит как-то по-джавовски.
Хм... Звучит как-то по-джавовски.
21 Кб, 1148x319
>>3599
но они же обещали temporarily(((
но они же обещали temporarily(((
>>3414
Везде примерно тоже самое, описан базовый функционал, но всё равно не понятно как с помощью него решать задачи. В итоге решаю их без словарей, но в этом нету смысла.
Везде примерно тоже самое, описан базовый функционал, но всё равно не понятно как с помощью него решать задачи. В итоге решаю их без словарей, но в этом нету смысла.
>>3702
Ну может быть в твоих задачах словари и не нужны. Либо нужны, но тебе не хватает алгоритмической базы, базы по структурам данным.
Словари - это базисная структура данных, позволяющая хранить данные в виде ключ-значение. Вот если тебе нужно хранить данные с возможностью обращения к ним по ключу, значит тебе нужны словари. Всё остальное - дополнительный функционал, чтобы работать было удобнее и чтобы не городить свои велосипеды.
Если обращение по ключу не актуально, то и словари тебе не нужны.
Ну может быть в твоих задачах словари и не нужны. Либо нужны, но тебе не хватает алгоритмической базы, базы по структурам данным.
Словари - это базисная структура данных, позволяющая хранить данные в виде ключ-значение. Вот если тебе нужно хранить данные с возможностью обращения к ним по ключу, значит тебе нужны словари. Всё остальное - дополнительный функционал, чтобы работать было удобнее и чтобы не городить свои велосипеды.
Если обращение по ключу не актуально, то и словари тебе не нужны.
>>3525
У тебя же вроде линейная структура. Как товар ссылается на бренд, так бренд на категорию.
Другое дело, что это какая-то оторванная от жизни модель. Бренд же явно может не в одной категории встречаться. Или это какой-то особенный каталог?
У тебя же вроде линейная структура. Как товар ссылается на бренд, так бренд на категорию.
Другое дело, что это какая-то оторванная от жизни модель. Бренд же явно может не в одной категории встречаться. Или это какой-то особенный каталог?
>>1391 (OP)
Посоветуйте библиотечку для написания ботов в телегу. Ну или перенаправьте в соответствующий тред, спасибо.
Посоветуйте библиотечку для написания ботов в телегу. Ну или перенаправьте в соответствующий тред, спасибо.
Прошу помощи, программа ищет все простые числа до n-го числа, с помощью Решета Эратосфена. https://pastebin.com/PxXW8Si4, думаю на stackoverflow все объяснено , но я не знаю английского, конкретно непонятна вот эта строка.
sieve[ii::2i]=[False]((n-ii-1)//(2i)+1)
Непонятно, как вообще работает эта строка,разве ясно как вырезка делается , как я понял, сколько вырезка выдает значений , на такое же число мы должны домножить [False], ни больше ни меньше, иначе выдаёт ошибку , механика мне непонятна. Дальше не ясно откуда взялась эта мудреная формула ((n-ii-1)//(2*i)+1), которая угадывает количество чисел, которым надо присвоить False значения, так как они составные.
sieve[ii::2i]=[False]((n-ii-1)//(2i)+1)
Непонятно, как вообще работает эта строка,разве ясно как вырезка делается , как я понял, сколько вырезка выдает значений , на такое же число мы должны домножить [False], ни больше ни меньше, иначе выдаёт ошибку , механика мне непонятна. Дальше не ясно откуда взялась эта мудреная формула ((n-ii-1)//(2*i)+1), которая угадывает количество чисел, которым надо присвоить False значения, так как они составные.
>>3820
Вот сама программа
def primes(n):
""" Returns a list of primes < n """
# (c) Robert William Hanks - https://stackoverflow.com/a/3035188/5741205
sieve = [True] n
print("все чётные числа игнорируются и будут пропущены при возврате...\n")
for i in range(3,int(n0.5)+1,2):
if sieve:
print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]]))
print(f'i:{i} вычёркиваем все числа кратные "{i}", начиная с "{i}^2": {list(range(ii, n, 2i))}')
sieve[ii::2i]=[False]((n-ii-1)//(2i)+1)
print(f'sieve[{i}{i}::2{i}]=[False](({n-i}{i-1})//(2{i})+1)')
print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]]))
print('' * 60)
return [2] + [i for i in range(3,n,2) if sieve]
Вот сама программа
def primes(n):
""" Returns a list of primes < n """
# (c) Robert William Hanks - https://stackoverflow.com/a/3035188/5741205
sieve = [True] n
print("все чётные числа игнорируются и будут пропущены при возврате...\n")
for i in range(3,int(n0.5)+1,2):
if sieve:
print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]]))
print(f'i:{i} вычёркиваем все числа кратные "{i}", начиная с "{i}^2": {list(range(ii, n, 2i))}')
sieve[ii::2i]=[False]((n-ii-1)//(2i)+1)
print(f'sieve[{i}{i}::2{i}]=[False](({n-i}{i-1})//(2{i})+1)')
print('содержимое решета:\t{}'.format([x for x in range(3,n,2) if sieve[x]]))
print('' * 60)
return [2] + [i for i in range(3,n,2) if sieve]
>>3822
sieve[ii::2i] выбирает все числа кратные "{i}", начиная с "{i}^2.
((n-ii-1)//(2i)+1) = находит сколько таких чисел в твоем листе.
Умножая на [Flase] получаем равенство len(sieve[ii::2i]) == len(
[False]((n-ii-1)//(2i)+1) )
Дальше на все места sieve[ii::2i] подставляется False
sieve[ii::2i] выбирает все числа кратные "{i}", начиная с "{i}^2.
((n-ii-1)//(2i)+1) = находит сколько таких чисел в твоем листе.
Умножая на [Flase] получаем равенство len(sieve[ii::2i]) == len(
[False]((n-ii-1)//(2i)+1) )
Дальше на все места sieve[ii::2i] подставляется False
>>1391 (OP)
Сап, я новичок, создал профиль на гитхабе, пощу туда решение задач с курсов, и просто задач. Буду какие то проекты постить.
И возник такой вопрос, есть ли смысл допустим просить людей звездочку поставить на мой репрозиторий, или в этом нет никакого смысла?
Сап, я новичок, создал профиль на гитхабе, пощу туда решение задач с курсов, и просто задач. Буду какие то проекты постить.
И возник такой вопрос, есть ли смысл допустим просить людей звездочку поставить на мой репрозиторий, или в этом нет никакого смысла?
>>3992
Молодец, возьми пряник
Молодец, возьми пряник
>>3992
Если проект полезен - сами поставят.
Если проект полезен - сами поставят.
>>3913
Спасибо, но не совсем понятна откуда взялась эта формула ((n-ii-1)//(2i)+1) , как ее вообще выдумали , я даже подумал проще было бы записать эту строку как
sieve[ii::2i]=[False]*len(sieve[ii::2i])
Смотрел , результат получается тот же правильный , но может, так я значительно теряю в скорости ?
Спасибо, но не совсем понятна откуда взялась эта формула ((n-ii-1)//(2i)+1) , как ее вообще выдумали , я даже подумал проще было бы записать эту строку как
sieve[ii::2i]=[False]*len(sieve[ii::2i])
Смотрел , результат получается тот же правильный , но может, так я значительно теряю в скорости ?
>всего ~6300 вакансий для питона на hh
>в твоём городе ни одной
>удалённых на всю раисю 273
>из них для джунов меньше 50
Всё тлен.
>>4052
Ну ты глупенький? Никто ждуна брать на удаленку не будет.
Лучше пройди собес по скайпу и вкатывайся в ДС. Там джунам платят хорошо, на съем хватит и сверху останется.
Ну ты глупенький? Никто ждуна брать на удаленку не будет.
Лучше пройди собес по скайпу и вкатывайся в ДС. Там джунам платят хорошо, на съем хватит и сверху останется.
>>4119
Оу, что у нас тут? Выученная беспомощность? Прекрасный настрой для начала новой жизни. Продолжай в том же духе.
Оу, что у нас тут? Выученная беспомощность? Прекрасный настрой для начала новой жизни. Продолжай в том же духе.
>>4154
Я в отличии от диванных пиздаболов бывал в мск и знаю что это такое пытаться куда-то там устроится без московской прописки. А потом очередное дерьмо умничающее статейку прочитало от психолуха и давай покровы срывать хочется ему в рожу плюнуть.
Я в отличии от диванных пиздаболов бывал в мск и знаю что это такое пытаться куда-то там устроится без московской прописки. А потом очередное дерьмо умничающее статейку прочитало от психолуха и давай покровы срывать хочется ему в рожу плюнуть.
>>4158
И куда тебя без прописки не пускали, практик наш?
И куда тебя без прописки не пускали, практик наш?
152 Кб, 768x1024
Как изменить значение ключа в словаре, но ТОЛЬКО если этот ключ существует?
В две строки так:
if 'benis' in d: d['benis'] = 'long'
А покороче никак нельзя? Думал встроенные методы словаря что-нибудь подобное умеют, но там нет ничего, update и тот добавляет лишние ключи.
В две строки так:
if 'benis' in d: d['benis'] = 'long'
А покороче никак нельзя? Думал встроенные методы словаря что-нибудь подобное умеют, но там нет ничего, update и тот добавляет лишние ключи.
сап, програмач. такой вопрос от нюфага вам возник: ищу работу в вебе (по классике вкатывальщик) и в моем зажопье нет никаких галер на питонщиков джунов в вебе. а если и есть это мидлы и сеньоры куда я уже там все отсылал и меня просто продинамили. но при этом дохуя вакансий на пхп джунов и стажеров. так вот вопрос - стоит ли им слать в надежде что придется быстро переучиваться, или же я там даже тестовое не пройду если мне его вообще вышлют?
1,8 Мб, 1920x1080
А подскажите, чем можно сделать следующую штуку:
Есть примитивная кроссплатформенная софтина, которая должна определенным образом обрабатывать указанные каталоги. Накидал на Ткинтере форму, сделал кнопку добавления каталога в Listbox и удаление выбранного, плюс кнопка старта.
А хочется не простой листбокс, а список с колонками (например, путь к каталогу и статус его обработки), плюс (самое главное!) возможность перетащить в него нужные каталоги мышкой из проводника, а не добавлять каждый раз вручную из диалогового окна. Вот как бы этот драг-н-дроп реализовать правильнее? Ткинтер для таких вещей не особо приспособлен, насколько я понял. Стоит смотреть в сторону PyQt? И если да, то куда копать, а то гуглится не очень пока успешно?
Есть примитивная кроссплатформенная софтина, которая должна определенным образом обрабатывать указанные каталоги. Накидал на Ткинтере форму, сделал кнопку добавления каталога в Listbox и удаление выбранного, плюс кнопка старта.
А хочется не простой листбокс, а список с колонками (например, путь к каталогу и статус его обработки), плюс (самое главное!) возможность перетащить в него нужные каталоги мышкой из проводника, а не добавлять каждый раз вручную из диалогового окна. Вот как бы этот драг-н-дроп реализовать правильнее? Ткинтер для таких вещей не особо приспособлен, насколько я понял. Стоит смотреть в сторону PyQt? И если да, то куда копать, а то гуглится не очень пока успешно?
Есть некоторая библиотека, но для моей задачи там может понадобиться всего лишь малая часть тех файлов и функций, которые там присутствуют. Как я могу узнать, какие конкретно файлы и функции используются, кроме как добавлять принт имени файла и функции в каждом файле библиотеки?
>>4291
Зачем эти полумеры? Давайте по-чесному перейдём на перл, раз пишем на питоне, как на перле.
> else pass
Зачем эти полумеры? Давайте по-чесному перейдём на перл, раз пишем на питоне, как на перле.
>>4296
Пожалуй, что совсем лаконичного решения нет. Задача нештатная пожалуй.
Варианты решения:
1) описать свою функцию
def upd(dict_obj, key, value)
2) унаследовать класс от dict и добавить к нему метод upd(key, value)
по сути одно и тоже , первый вариант даже получше
Но мне в них не нравится то, что дублирование ключа идёт, это тут самое некрасивое.
Пожалуй, что совсем лаконичного решения нет. Задача нештатная пожалуй.
Варианты решения:
1) описать свою функцию
def upd(dict_obj, key, value)
2) унаследовать класс от dict и добавить к нему метод upd(key, value)
>if 'benis' in d: d['benis'] = 'long'
>d['benis']='long' if 'benis' in d.keys() else pass
по сути одно и тоже , первый вариант даже получше
Но мне в них не нравится то, что дублирование ключа идёт, это тут самое некрасивое.
>>4300
Можно поправить исходнички интерпретатора и скомпилировать свой форк с лаконичным однострочным синтаксисом.
Можно поправить исходнички интерпретатора и скомпилировать свой форк с лаконичным однострочным синтаксисом.
>>4296
ВНЕЗАПНО, писать две строки, а не какую-ту нечитаемую хуиту.
ВНЕЗАПНО, писать две строки, а не какую-ту нечитаемую хуиту.
>>4303
Вот мне тоже кажется, что анон спрашивал как попроще, а тут предлагают совсем по-взрослому.
Мне вот не нравится "else pass". Хорошо бы чтобы его можно было не писать.
Вот мне тоже кажется, что анон спрашивал как попроще, а тут предлагают совсем по-взрослому.
Мне вот не нравится "else pass". Хорошо бы чтобы его можно было не писать.
>>4314
Проще всего написать функцию или писать две строки, а не устраивать синтаксические выебоны. Простое лучше, чем сложное.
$d{benis} = "long" if exists $d{benis};
Проще всего написать функцию или писать две строки, а не устраивать синтаксические выебоны. Простое лучше, чем сложное.
$d{benis} = "long" if exists $d{benis};
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы видите копию треда, сохраненную 18 ноября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.