Как стать автором
Обновить
128
3.3
Александр @DaneSoul

Веб-программирование, Python

Отправить сообщение
А почему нельзя разделить на два выражения, чтобы не нагромождать?
int_gen = (x ** 3 + x ** 4 for x in range(-2, 4))
list_c = [t + t ** 2  for t in int_gen]
Да, так выглядит более логично и понятно, исправил на Ваш вариант.
PS: оба вариант дают корректный ответ.
Добавил и этот пример.
Все-таки выражения-генераторы читаются значительно понятней применения подобных функций…
Большое спасибо, добавил Ваш вариант с указанием авторства.
Крайне рекомендую игру "The Bridge" (на нее сейчас как раз скидка до 6 февраля — всего 72 руб в Стиме). Очень необычные пространственные головоломки (в том числе с манипуляцией гравитацией и т.п. необычными механиками). Вначале задания простые и поняные, но чем дальше, тем все более мозговыносящие!
>Windows 10 Mobile, например, сможет работать на десктопном ПК,
> а вот десктопная версия этой операционной системы без проблем будет работать на мобильном устройстве.

А программное обеспечение тоже будет свободно запускаться на любой из версий?
То есть можно ли будет запустить мобильную программу под десктопом при таком подходе, и наоборот соответственно?
А где можно почитать о уже реально решенных/решаемых на квантовых компьютерах проблемах?
То есть не предположения «мы решим», а реальный факт «без квантового решить не могли, а с ним — получилось, есть реальный результат».

PS: Я ни в коем случае не противник новой технологии, просто хотелось бы понять, насколько она уже выходит из чистой теории в реальное применение.
Переснимать имеет свои недостатки:
— Неудобно вносить изменения
— Не решает вопрос с книгами, в которых надо делать заметки
Спасибо, не слышал о таком, заинтересовался.
Их вроде еще не выпустили — на офф. сайте предзаказ на март 2017.
Вообще, устройство интересное, вот именно возможности легко делать заметки мне не хватало в электронной книге, если тут будет удобно и устройство «взлетит», то возможно приобрету.
Основная проблема с обычными тетрадями, блокнотами и записными книжками — не удобно менять страницы местами, вставлять или убирать страницы. А это очень часто нужно, когда нужно обновить или дополнить информацию в конспектах.
Для себя решил вопрос:
  • перейдя для конспектов на тетради на кольцах (типа такого: http://9-18ok.ru/upload/iblock/d16/2df16964_1029_11e1_84e6_d8d385e1136a_0b4db48c_acab_4059_ab8c_93993bdbb153.jpg).
  • Для мелких заметок использую листы формата A6, складывая их в сложенный лист формата A5 по тематикам
Фаги работают против бактерий, так как сами являются вирусами, бороться фагами против вирусов не получится. Фаг внедряется в заражаемую клетку, проникнуть в вирус таким образов невозможно — они сами близких размеров.
В левой колонке логичней было бы не общее количество для слова указывать, а его частоту среди всех выделенных слов языка.
И графики таких частот были бы весьма интересны — насколько плавно убывает частота использования.
(1) Тут вопрос терминологический, если судить логически, да, «половой процесс» для бесполых организмов звучит странно. Но тем не менее, очень часто коньюгацию рассматривают именно как половой процесс, так как суть его сводится примерно к тому же, что и половой процесс с разделением полов.

(2) Да, вот тут соглашусь с Вашим замечанием — я был не прав с терминологической точки зрения.

(3) С позиции русского языка фразу "а яйцеклетка — еще и митохондриальную ДНК" сложно прочитать иначе, как то, что только она ее и содержит. Да, я понял что там только про гаметы речь, но это все равно не верно, так как в сперматозоиде есть митохондрии, но они не передаются потомку.
Вообще, без объяснения феномена митохондриальной наследственности, передаваемой по женской линии, о митохондриях писать смысла мало, а важность этого момента не освещается в статье.
Позанудствую и исправлю ошибки и неточности по биологии.

Если мы говорим о половом размножении, требуется как минимум два различных пола.

Не забывайте, что коньюгация одноклеточных тоже относится к половому процессу, но явного разделения полов в данном случае нет.

Эмбрион не имеет половых признаков до 4-5 недель эмбрионального развития.

Анатомически — еще не имеет, а вот генетически его пол уже определен в момент слияния сперматозоида с яйцеклеткой, когда стало известно XY или XX у нас получилось. Да, возможны вторичные аномалии дальнейшего развития, но это не меняет генотип.

а яйцеклетка — еще и митохондриальную ДНК, важную маленькую молекулу!

Если предыдущие замечания — это неточности, то тут уже однозначная ошибка. Митохондрии и митохондриальную ДНК содержат все клетки! В сперматозоиде есть митохондрион, содержащий митохондрии. Однако, если говорить с позиции передачи митохондриальной наследственности, то да, она передается через яйцеклетку — есть некоторые генетические заболевания связанные именно с дефектом митохондрий.

Не нужны параметры периодической выборки — не задавайте, — работайте как обычно. А зачем лишать возможно полезного функционала тех, кому он мог бы пригодиться?

Ага, а потом нужно чужой код подправить, открываешь, а там трехэтажные конструкции цепочкой выстроенные со всеми возможными параметрами…
Не, хорошо читаемый язык (а это есть в философии Python) не должен позволять стрелять в ногу из зенитки — за то и люблю Python, что тут PEP 8 даже правильность отступов определяет.

PS: Спасибо за интересную дискуссию и хороший пример для следующей статьи.
Разница в сложности понимания концепции — текущий step — не вызывает неоднозначностей — есть диапазон по start и stop и есть частота выбора из диапазона, плюс, наличие шага позволяет его делать отрицательным и разворачивать направление выборки.
Таким образом третий параметр шага прост и очевиден для понимания, плюс имеет кучу реальных применений в распространенных задачах, которые оправдывают его наличие.

Введение четвертого параметра привело бы к наличию двух параметров для выборки, соответственно возникает неоднозначность с порядком их применения и с предугадыванием возможных коллизий — вместо простого и понятного инструмента получим головоломку, особенно с учетом того, что срезы часто применяются не сами по себе, а в составе более сложных выражений.

Так что я за то, для случаев когда одного критерия выборки недостаточно — разбивать задачу на две, фильтруя последовательно по одному критерию, затем по другому.
ИМХО, срезы в принципе не задумывались для сложных комплексных выборок с условиями — для этих целей существуют генераторы выражений (list comprehensions). Вот там намного больше простора для творчества и гибких изящных решений. А там, где задача настолько сложна, что не хватает и генераторов — уже нужно писать циклы с ветвлением условий, чтобы не получился сверхкомпактный «write only» код.

В следующей моей статье из этого цикла как-раз будут рассматриваться генераторы выражений, и там в процессе написания уже встает много очень интересных применений.
Если есть еще какие интересные идеи или задачи на эту тему — пишите в личку, могу попробовать осветить их в следующей статье.
С психологами все осложняется еще тем, что важен не только профессионализм психолога, но и то, чтобы у клиента он не вызывал внутреннего отторжения, чтобы они были на одной волне, иначе клиент просто не откроется и эффективность работы будет очень низкая.
Кстати, можно убрать выходные еще более изящно, используя индексы
# Формируем список дней от 1 до 31 с которым будем работать
days = [d for d in range(1, 32)] ]

wdays6 = [wd for (i, wd) in enumerate(days, 1) if i % 7 != 0]  # Удаляем каждый 7-й день
# Удаляем каждый 6 день в оставшихся после первого удаления:
wdays5 = [wd for (i, wd) in enumerate(wdays6, 1) if i % 6 != 0]  

print(wdays5)
# [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 29, 30, 31]

Обратите внимание, что просто объединить два условия в одном if не получится, как минимум потому, что 12-й день делится на 6, но не выпадает на последний 2 дня недели!
Если даже сама постановка вопроса не всегда понятна и трактуется однозначно, значит задачу стоит разделить на несколько более простых и понятных этапов. Собственно подобный принцип стремления к понятности кода лежит в основе философии Python.
 # Формируем список дней от 1 до 31 с которым будем работать
days = [d for d in range(1, 32)]   

# Делим список дней на недели
weeks = [days[i:i+7] for i in range(0, len(days), 7)]   
print(weeks)   # [[1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31]]

# Выбираем в каждой неделе только первые 5 рабочих дней, отбрасывая остальные
work_weeks = [week[0:5] for week in weeks]   
print(work_weeks)   # [[1, 2, 3, 4, 5], [8, 9, 10, 11, 12], [15, 16, 17, 18, 19], [22, 23, 24, 25, 26], [29, 30, 31]]

# Если нужно одним списком дней - можно объединить
wdays = [item for sublist in work_weeks for item in sublist]
print(wdays)   # [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 29, 30, 31]

Вообще, большое спасибо за поднятый вопрос — я как раз сейчас пишу статью по генерации списков (планирую опубликовать до конца месяца), и вот этот пример с рабочими днями очень показателен, обязательно его туда добавлю!

Информация

В рейтинге
1 077-й
Дата рождения
Зарегистрирован
Активность