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

    −90

    1. 1
    2. 2
    def removeDuplicate(store):
        return [x for x in store if x not in locals()['_[1]']]

    Удаление дубликатов в списке, set(store) религия не позволила сделать:)

    Запостил: morpheuz, 13 Сентября 2011

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

    • set может изменить порядок.
      Да, и поясните, что такое вот это:
      locals()['_[1]']
      Ответить
      • >Да, и поясните, что такое вот это:
        Судя по всему, вызывается ф-кция, которая возвращает словарь, и автор обращается к нему по ключу "_[1]"

        А вот теперь я сам нихера не понял
        Ответить
        • Я знаю, что такое locals(). Откуда среди локальных переменных нечто по имени "_[1]"?
          Ответить
          • По всей видимости, это значение списка, составляемого в данном list comprehension.

            Грязные извращенцы!
            Ответить
          • _
            возвращает значение, которое было вычисленно в результате, предыдущей операции.
            Ответить
            • И это я тоже знаю. Но у нас-то _[1], а не _.
              Да и _ в неинтерактивном режиме вообще не существует.
              Ответить
              • Вообще как бы оно существует в функциональном блоке.
                а _[1] это первый элемент словаря, поскольку результат итерации был словарем.
                Как-то так.. это магия)
                Ответить
                • То есть вы хотите сказать, что если a = [1, 2, 3], то locals()["a[1]"] должно вернуть 2, я правильно понимаю?
                  Ответить
                  • Вообще-то правильно будет locals()['a'][1]. А так я хз что оно вернёт и вернёт ли что-то вообще.
                    Ответить
                • Короче, назовите версию Python, где этот код работает. На 2.7.1 он не работает. Про такую особенность list comprehension я слышу в первый раз.
                  Ответить
    • locals это стандартная ф-я питона, возвращает словарь локальных переменных.
      Ответить

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