• Как из двух списков сделать один?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый вечер, pypyshka.

    Воспользуйтесь функцией map().

    >>> a = [('1', 'a', 'b', 'c'), ('2', 'x', 'y', 'z'), ('3', 'x', 'y', 'z')]
    >>> b = [('a', 'b', 'c', 'd'), ('x', 'y', 'z', 'w'), ('x', 'y', 'z', 'w'), ('u', 'o', 'n', 'm')]
    >>> new_list = lambda x, y: [i for i in x] + [i for i in y if i not in x]
    >>> new_result = list(map(new_list, a, b))
    >>> new_result
    [['1', 'a', 'b', 'c', 'd'], ['2', 'x', 'y', 'z', 'w'], ['3', 'x', 'y', 'z', 'w']]
    Ответ написан
    1 комментарий
  • Как вывести строку, содержащую максимально большое число, из списка?

    aRegius
    @aRegius
    Python Enthusiast
    >>> a = ['maz/2/arini', 'ya/16/streb', 'lovel/5/as']
    >>> b = [i.split('/') for i in a]
    >>> b_sort = sorted(b, key=lambda x: int(x[1]))
    >>> b_sort_max = b_sort[-1]
    >>> text_max = '/'.join(b_sort_max)
    >>> text_max
    'ya/16/streb'
    Ответ написан
    1 комментарий
  • Как заставить функцию zip добавлять пустые элементы?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день.

    Вам нужна функция zip_longest из модуля itertools.

    >>> from itertools import zip_longest
    >>> a = ['1', '2']
    >>> b = []
    >>> list(zip_longest(a, b, fillvalue=''))
    [('1', ''), ('2', '')]
    >>>


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

    aRegius
    @aRegius
    Python Enthusiast
    Роман, приветствую.

    Посмотрите Часть 1 и Часть 2. Емко и по-существу волнующих вас вопросов.
    Ответ написан
    Комментировать
  • Как сообразить алгоритм оптимизации?

    aRegius
    @aRegius
    Python Enthusiast
    Сергей, смотри, может подойдет такой вариант (я опишу общий принцип, реализация кода, ессно, на тебе):

    1. Сортируешь фрукты по их количеству, от большего к меньшему (например, 30 яблок, 25 груш, 20 апельсинов, 15 мандаринов, 10 слив, 5 бананов).

    2. Заполняешь корзины сверху - вниз (от больших объемов к меньшим). Заполняешь максимально полно - всю корзину, остаток оставляешь пока в стороне, не используешь.

    Например:
    шаг 1: 30 яблок и 3 корзины по 20... Заполняем 1 корзину полностью, остаток 10 яблок сохраняем на потом, сейчас не используем.
    шаг 2: 25 груш и 2 корзины по 20... Заполняем 1 корзину полностью, остаток 5 груш сохраняем на потом, сейчас не используем.
    шаг 3: 20 апельсинов и 1 корзина по 20... Заполняем 1 корзину полностью, остатка нет.
    шаг 4: 15 мандаринов и 1 корзина по 18... ПРОПУСКАЕМ, ищем вариант заполнения ПОЛНОЙ корзины...
    шаг 5: 15 мандаринов и 2 корзинs по 16.. ПРОПУСКАЕМ, ищем вариант заполнения ПОЛНОЙ корзины...
    шаг 6: 15 мандаринов и 6 корзин по 14... Заполняем 1 корзину полностью, остаток 1 мандарин сохраняем на потом, сейчас не используем.

    и т.д. .........

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

    Прогон сверху вниз нужен для того, чтобы рационально использовать корзины - ведь, если есть 1 яблоко, и 2 корзины (20 и 4 мест соответственно), логично положить его в корзину на 4 места.

    Как-то так. Я, конечно, не специалист в нативных алгоритмах, возможно есть какой-то "интерполяционный метод кажущейся дисперсии" для решения подобных задач - тут я пас :). Чем смог...
    Ответ написан
    3 комментария
  • Какую версию Python и литературу посоветуете?

    aRegius
    @aRegius
    Python Enthusiast
    Что могу порекомендовать из литературы (коль скоро вопрос именно о ней) чем пользовался лично:

    1. Во-первых, однозначно Доусон. Интересно, быстро, практично.

    2. После - на выбор: если очень сжато - то ЭТО, если основательно - ЭТО.

    Для начала все.

    С версиями сейчас не заморачивайся, отдавая приоритет 3-ке. По поводу ближайшего будущего Python, связанного с его версиями, если интересно, почитай небольшое интервью с Андреем Светловым ТУТ.
    Ответ написан
    2 комментария
  • Изучение python не для новичков, с чего начать?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Я уже как-то писал, что, в силу своей природы, предпочитаю книги всем другим источникам знаний. Поэтому рекомендовать (а рекомендовать я могу лишь то, чем лично пользовался) могу только в этом направлении, благо, с литературой у Python все в порядке, с качественной в том числе.

    Итак, лично рекомендую (то, что, как вы и просили, не для базового уровня):

    1. В первую очередь - Python Cookbook и Fluent Python

    2. После, при желании - Expert Python Programming и Functional Python Programming
    Ответ написан
    9 комментариев
  • Django: CBV или функции?

    aRegius
    @aRegius
    Python Enthusiast
    Я не столь многоопытен в Django, но имеющейся информацией поделиться готов. Возможно, вам также пригодится...

    Есть три человека (двое из них - семейная пара), к мнению которых в данном вопросе (Django-разработка) я прислушиваюсь в первую очередь, тщательно и неторопливо изучая соответствующие печатные материалы...

    Это Daniel & Audrey Roy Greenfeld, авторы небезызвестной Two Scoops of Django и Arun Ravindran, developer member of the Django Software Foundation и автор Django Design Patterns and Best Practices.

    И первые, и второй предпочитают CBV. Но это, в большей степени, личные предпочтения. Сами Гринфилды отмечают, что знают немало своих коллег, предпочитающих работу с FBV (цитирую: "...Some developers prefer to err on the side of using FBVs for most views and CBVs only for views that need to be subclassed. That strategy is fine as well...."). Одним словом, это действительно вопрос личных предпочтений и характера разрабатываемого продукта.

    Единственный категорический совет от них - не использовать CBV для написания обработчиков ошибок ("...Don’t use CBVs to write custom 403, 404, and 500 error handlers. Use FBVs instead....")

    А тут можно полюбопытствовать на графическую подсказку от Гринфилдов по выбору предпочтения в зависимости от стоящих перед вами задач.
    Ответ написан
    Комментировать
  • Как проверить есть в строке кириллица?

    aRegius
    @aRegius
    Python Enthusiast
    >>> kirill = ('абвгдеёжзийклмнопрстуфхцчшщъыьэюя')
    >>> text = 'Юvrsfы'
    >>> find_kirill = [x for x in kirill if x in text.lower()]
    >>> find_kirill
    ['ы', 'ю']
    >>>
    Ответ написан
    2 комментария
  • Как в python извлечь корень?

    aRegius
    @aRegius
    Python Enthusiast
    Существует три способа вычисления квадратных корней: с помощью функции sqrt() модуля math, с помощью выражения ** и с помощью встроенной функции pow(). В данном случае я указал их в порядке снижения скорости вычисления. Т.е. быстрее других считает sqrt(), потом **, потом pow(). С другой стороны, отмечу, что для работы с sqrt() необходимо импортировать модуль math, а ** и pow() доступны сразу:

    >>> import math
    >>> math.sqrt(9)
    3.0
    >>> 9 ** .5
    3.0
    >>> pow(9, .5)
    3.0
    Ответ написан
    8 комментариев
  • Как решить задачу по замене слов, содержащих ошибки на корректные слова?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Пробуйте библиотеку difflib:

    >>> text = 'я пешу биз ашибок'
    >>> b = ['пишу', 'без', 'ошибок']
    >>> text_new = text.split() # т.к. вторым аргументом в difflib.get_close_matches должен быть list
    >>> import difflib
    >>> for ok_word in b:
    	        wrong_word = difflib.get_close_matches(ok_word, text_new) # ищем "плохое" слово
    	        wrong_word = ''.join(wrong_word) # преобразуем в строку из списка для корректной работы replace
    	        text = text.replace(wrong_word, ok_word)
    
    	
    >>> text
    'я пишу без ошибок'
    Ответ написан
    2 комментария
  • Как вывести элементы в список на питоне?

    aRegius
    @aRegius
    Python Enthusiast
    P.S. Дополню ответ Алексея

    ... и если действительно нужно получить список с элементами списков, а не кортежей, дополнительно прогоните генератором списков:
    >>> result = [list(item) for item in result]
    >>> result
    [['1', 'a', 'x'], ['2', 'b', 'y'], ['3', 'c', 'z']]
    Ответ написан
    2 комментария
  • Почему в Python при целочисленном делении (-1 // 2) получается ответ (-1)?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый вечер.

    Просто запомните, что оператор // производит деление, округляя результат до ближайшего меньшего целого значения. Вот и все.

    -1 / 2 = - 0.5. Ближайшее меньшее целое значение: -1.
    Ответ написан
    Комментировать
  • На каких IT-специалистов выше спрос за рубежом?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день.

    Исходя из доступной информации и наблюдений, уровень Senior/Middle (читай уровень толкового специалиста), востребован по-умолчанию и везде - на рынке IT нехватка хороших специалистов каких-бы то ни было направлений.

    А объективно, выше всего спрос ("тройка лидеров", так сказать) на Java, Javascript и PHP.
    Ответ написан
    3 комментария
  • Как найти соседние элементы массива, сумма которых максимальна (минимальна)?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    num = [.........]
    opt = list(map(lambda x, y: (x + y, (x, y)), num, num[1:]))
    max_sum_pair = max(opt)    # итоговый кортеж МАКСИМУМ (сумма, (число 1, число 2))
    min_sum_pair = min(opt)     # МИНИМУМ
    Ответ написан
    Комментировать
  • Какую админку выбрать для Django?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Конкретно какую - на этот вопрос ответа у меня нет по причине, созвучной вашей.

    Но, посмотрите, может эта информация поможет каким-либо образом:
    1. Здесь можно посмотреть описание и сравнение Админок.
    2. Гринфилды (авторы небезызвестной Two Scoops...) среди более популярных отмечают django-grappelli, django-suit и django-admin-bootstrapped.

    Чем смог, как говорится...
    Ответ написан
    4 комментария
  • Почему ключи словаря меняют свой порядок, каков алгоритм?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    Если с английским на уровне чтения литературы - обратите внимание на эту книгу. В контексте вашего вопроса - страница 85, подраздел dict and set Under the Hood. Да и просто отличная книга (издание на русском не рекомендую по причине плохого перевода).

    На русском языке по данной тематике можно посмотреть этот топик.
    Ответ написан
    Комментировать
  • 'str'.startwith() - AttributeError: 'str' object has no attribute 'startwith' - why?

    aRegius
    @aRegius
    Python Enthusiast
    puker-ti, startswith...
    Ответ написан
    Комментировать
  • Где можно посмотреть фриланс рассказы?

    aRegius
    @aRegius
    Python Enthusiast
    Я не могу отнести себя к той категории людей, которые искали, сортировали и знают множество подобных ресурсов на любой вкус.

    Однако интерес к подобным реальным историям реальных людей (жизнь и работа программистов за рубежом) в свое время заставил меня уделить какое-то время поиску подходящих мне соответствующих ресурсов.

    На сегодняшний день есть лишь один, за которым я слежу постоянно. Вот он.

    Чем меня привлек:
    1. Грамотная (с точки зрения русского языка), подробная, интересная подача материала.
    2. Большое количество качественных, интересных, тематически уместных фотографий.
    3. Интересные темы.
    4. Удобный дизайн в контексте легкости чтения и восприятия информации (никаких мигающих баннеров, всплывающих реклам и прочей мути...).
    5. Хороший мотиватор (имею ввиду сам ресурс).

    Естественно, это мое субъективное мнение. Но я далеко не уникум, поэтому и делюсь, будучи уверенным, что кому-то также окажется полезным.
    Ответ написан
    2 комментария
  • Как решить, казалось бы, простую задачу на python3?

    aRegius
    @aRegius
    Python Enthusiast
    Привет.

    1. Есть два числа, x и y (целые положительные).
    2. Есть их разность, z (z = x - y)
    3. Чтобы найти большее из них, всего-то нужно сумму этих двух чисел и их разности разделить на 2:
    max_num = (x + y + z)/2
    4. Единственная "засада" в том, что, ввиду неопределенности чисел, их разность может быть отрицательным числом (например, x = 5, y = 853, x - y = - 848).
    5. Поэтому нам надо обеспечить, чтобы разность, при любом раскладе, была положительная.
    6. Для этого мы эту самую разность возводим во вторую степень и извлекаем из результата квадратный корень - для того, чтобы код был менее шумный, разделим эту процедуру на два этапа: a) z = (x - y) ** 2; б) z = z ** .5

    7. Итоговый код:
    z = (x - y) ** 2
    z = z ** .5
    max_num = (x + y + z) / 2
    Ответ написан
    2 комментария