1. Python / Говнокод #17098

    −101

    1. 1
    self.exclude = list(set(list(self.exclude or []) + ['str1', 'str2']))

    Запостил: american_idiot, 12 Ноября 2014

    Комментарии (14) RSS

    • кручу(верчу(запутать(хочу)))
      Ответить
      • Мы знаем. Потом такие бедняги как Fike попадаются в ваши сети.
        Ответить
    • а вот и всё понятно) это же питочник
      лист из эксклюда (или [] если пуст) складывается с str1,str2
      потом выкидываются дубли
      потом опять лист делается
      и все это в эксклюд
      Ответить
    • Зачем exclude - list? Чтобы в нем за O(len) искать?
      Ответить
      • подозреваю, там glob/regex шаблоны, поэтому его нужно будет всё время целиком обходить.
        Ответить
        • А не будет ли эффективнее напиздячить регулярок в одну через |, а в случае срабатывания выяснить, какая отработала?
          Ответить
          • Сомневаюсь, что так будет шустрее.
            Ответить
          • Это максимум, что я смог придумать.
            import re
            
            def build_re(chunks):
                return re.compile('|'.join([r'(?P<%s>%s)' % (k, v) 
                                            for k, v in chunks.items()]))
            
            def test_builder():
                tests = { 'x': 'foo', 'y': 'bar' }
                expression = build_re(tests)
                for match in re.finditer(expression, '--foo--bar--bar'):
                    for group in tests.keys():
                        if match.group(group):
                            print '%s => %s' % (group, match.group(group))
            
            test_builder()

            Но интерфейс регулярных выражений, прямо скажем, в Питоне херово сделан. Есть куча методов, но все делают не то, что нужно.
            Ответить
            • За хорошими регулярками иди в руби, а еще лучш в пайтон
              Ответить
              • не в пайтон, а в перл, чурка
                Ответить
              • Наверное, все-таки в Перл. Питону хорошие регулярки пока не грозят. Надо, кстати, отдать должное Дотнету. По крайней мере с этим там проблем нет. Про регулярки в Руби ничего не знаю, но и желания большого нет. Мой опыт знакомства с языком ограничился установкой Редмайна, после чего больше с ним знакомится не захотелось.
                Ответить
                • руби это наследник перла

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

                  Ну Великая Совиная Книга про регулярки тоже их хвалит. Знаешь Совиную Книгу?
                  Ответить
      • Скорее чтоб гарантировать порядок обхождения или слайсить
        Ответить
    • lispytonify
      Ответить

    Добавить комментарий