Блог о програмировании и программистах

Чем больше всматривашься в код, тем больше код всматривается в тебя

Сортировка пузырьком

Оценка работы алгоритма сортировки пузырьком:


# -*- coding: UTF-8 -*-

#----------------------------------------
#сортировка пузырьком
#----------------------------------------

#инициализация
#----------------------------------------
import profile
import random
 
array = [x for x in xrange(1000)]
random.shuffle(array)
arr=[]

#----------------------------------------
#python эталон(встроенная функция[1000 - 0.001c])
profile.run('array.sort()')
#----------------------------------------

#1 вариант(неоптимизированный[1000 - 0.103c])
#----------------------------------------
# Реализация в виде функции
def bubble_sort(lst):
    for i in xrange(len(lst)-2):
        for j in xrange(len(lst) - i - 1):
            if lst[j] > lst[j+1]:
                lst[j], lst[j+1] = lst[j+1], lst[j]
    return lst

#запускаем скрипт сортировки
#----------------------------------------
profile.run('arr=bubble_sort(array)')
#----------------------------------------

400 потрясающих бесплатных сервисов

400 сервисов на все случаи жизни - перейти

Кратко о метаклассах в Python

О работе с метакласами по порядку:

1)Простой пример создания метакласса:

# coding=utf-8
class AttributeInitType(type):
    def __call__(self, *args, **kwargs):
        """Вызов класса при котором создается новый объект. """
        #создаем сам объект
        obj = type.__call__(self, *args)
        #добавляем нашему классу переданные атрибуты
        for name in kwargs:
            setattr(obj, name, kwargs[name])
        # вернем готовый объект
        return obj

....

Интересные особенности работы со словарями

Пишу про то, с чем непосредственно самому приходилось работать

1)Подсчет элементов в списке:

from collections import defaultdict
d = defaultdict(int)
color_list = ['red','black','red','blue']
for color in color_list:
    d[color] += 1
#{'blue': 1, 'black': 1, 'red': 2}
print d

2)Соединение двух списков в один словарье:

from itertools import izip
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue']
d = dict(izip(names, colors))
# {'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'}
print d

Код авторизации под пользователя

Можно вставить в любой контролер и исполнении зайти уже авторизованным:


from django.contrib.auth.models import User
u = User.objects.get(id=3)
backend = get_backends()[0]
u.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
login(request, u)\