- 1
- 2
- 3
- 4
def remove_duplicates(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if x not in seen and not seen_add(x)]
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−109
def remove_duplicates(seq):
seen = set()
seen_add = seen.add
return [x for x in seq if x not in seen and not seen_add(x)]
замечательная функция, возвращающая уникальные элементы списка.
−109
if form.cleaned_data.has_key('replace_id') and type(form.cleaned_data['replace_id']) == type(32):
...
Логично, чо
−113
def convert_get_to_post(header='HTTP_X_GET_DATA'):
def decorator(function):
@wraps(function)
def wrapper(request, *args, **kwargs):
if header in request.META:
request.method = 'GET'
request.GET = request.POST
return function(request, *args, **kwargs)
return wrapper
return decorator
Как избежать проблему с большим количеством параметров в URL при GET запросе...
−110
# количество гласных в строке
vowelsCount = lambda s: sum([1 for x in s if x in ['i','a','e','o','u']])
# Вхождение подстроки в строку
substringOccurence = lambda S,s:sum([1 for i in range(len(S) + 1 - len(s)) if S[i:i + len(s)] == s])
g = lambda S,s:'Number of times ' + substr + ' occurs is: ' + str(substringOccurence(S,s))
# первая из упорядоченных подстрок максимальной длины
alpha = lambda s: [x for x in
[s[i:i + j] for j in range(len(s),0,-1)for i in range(len(s) - j + 1)]
if x == ''.join(sorted(x))][0]
# atoi без atoi
stringToInteger = lambda s: sum([(ord(n) - ord('0')) * (10 ** i) for i,n in enumerate(s[::-1])])
Питонячьи извращения для одного курса или не все однострочники одинаково полезны.
−109
class QuerysetResponse(object):
"""
вариант респонса для фильтрации гридов или диктселекфилдов
используя механизм инструкций
"""
def __init__(self, queryset, application, root=None):
self.root = root or "data"
def __new__(cls, *args, **kwargs):
return super(cls, cls).__new__(cls)(*args, **kwargs)
def __call__(self, queryset, application):
dict_list = []
pack = get_pack_instance(application)
for item in pack.list_columns:
if isinstance(item, (list, tuple)):
dict_list.append(item[0])
elif isinstance(item, dict) and item.get('data_index'):
dict_list.append(item['data_index'])
self.dict_ = dict_list
if not queryset:
queryset = []
return PreJsonResult(dict(rows=list(queryset),
total=len(queryset)), dict_list=self.dict_).get_http_response()
self.root не используется, ну, это видно. QuerysetResponse "инстанцируется" во всем проекте один раз.
Мне бы такое даже в голову не пришло.
−124
print ("Программа вычисления номера подъезда.\nБудьте внимательны при вводе данных.\n")
n_kvartiry = input("Введите номер квартиры...\n")
n_kvartiry = int(n_kvartiry)
kol_etazhey = input("Введите количество этажей в доме...\n")
kol_etazhey = int(kol_etazhey)
kol_kvartir_etazh = input("Введите количество квартир на этаже...\n")
kol_kvartir_etazh = int(kol_kvartir_etazh)
kol_kvart_pod = kol_kvartir_etazh * kol_etazhey
result = n_kvartiry / kol_kvart_pod
if result <= 1:
print ("Номер подъезда 1")
x=1
elif result <= 2:
x=2
print ("Номер подъезда 2")
elif result <= 3:
x=3
print ("Номер подъезда 3")
elif result <= 4:
x=4
print ("Номер подъезда 4")
elif result <= 5:
x=5
print ("Номер подъезда 5")
elif result <= 6:
x=6
print ("Номер подъезда 6")
elif result <= 7:
x=7
print ("Номер подъезда 7")
elif result <= 8:
x=8
print ("Номер подъезда 8")
elif result <= 9:
x=9
print ("Номер подъезда 9")
elif result <= 10:
x=10
print ("Номер подъезда 10")
elif result <= 11:
x=11
print ("Номер подъезда 11")
elif result <= 12:
x=12
print ("Номер подъезда 12")
else:
print("Карлсон живет на крыше!!!")
print ("Все квартиры в этом подъезде:")
for n in range(1, kol_kvart_pod+1 ):
res = n + kol_kvart_pod*(x-1)
print (int(res), end=" ")
python 3
чисто поржать...
−107
****@****:~$ python
>>> import this
The Zen of Python, by Tim Peters
<....>There should be one-- and preferably only one --obvious way to do it.<...>
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
preferably only one
−111
def parse(file):
if 1==1: #вырвано из другого места, лень пробелы удалять
if file:
try:
doc = ET.parse(file)
except IOError:
return HttpResponse(u'nofile')
лол
−118
from os import walk
from time import time
from abc import ABCMeta, abstractmethod
class Reporter(object):
__metaclass__=ABCMeta
@abstractmethod
def report(self, catalogs_cntr, files_ctnr, speed):
""" output catalogs_cntr, files_ctnr, speed to somewhere """
#pass
class ConsoleIndicator(Reporter):
def __init__(self, out_splitter):
self.__out_splitter=out_splitter
def report(self, catalogs_cntr, files_ctnr, speed):
if self.__out_splitter and self.__out_splitter.pipes:
_result = "\rcataloges:" + repr(catalogs_cntr).rjust(8)
_result += "\tfiles:" + repr(files_ctnr).rjust(13)
_result += "\tspeed: %12.3f"%speed + " files/s"
self.__out_splitter.write(_result)
self.__out_splitter.flush()
class CatalogsWalker(object):
""" """
def __init__(self, catalogs, reporter=None):
""" """
self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
self.__reporter = reporter
self.__catalogs = catalogs if hasattr(catalogs, "__iter__") else [catalogs]
def __iter__(self):
self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
self.__start_time=time()
for catalog in self.__catalogs:
print catalog
for p,d,ns in walk(catalog):
_ = d;
self.__catalogs_cntr+=1
for n in ns:
self.__files_cntr+=1
self.__speed=self.__files_cntr/(time()-self.__start_time)
if self.__reporter:
self.__reporter.report(self.__catalogs_cntr, self.__files_cntr, self.__speed)
yield p,n
@property
def reporter(self):
return self.__reporter
@property
def catalog_counter(self):
return self.__catalogs_cntr
@property
def file_counter(self):
return self.__files_cntr
@property
def start_time(self):
return self.__start_time
@property
def speed(self):
return self.__speed
По мотивам http://govnokod.ru/17181 Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.
−121
#!/usr/bin/env python
# encoding: utf-8
import os
import sys
from sets import Set
class OutputSplitter(object):
""" splitter """
def __init__(self, out_splitter):
self.__pipes=None
if isinstance(out_splitter, OutputSplitter):
self.__pipes = Set(out_splitter.pipes)
elif out_splitter:
print out_splitter
if type(out_splitter) == list : #
for pn in out_splitter:
self.add_pipe(pn)
else:
self.add_pipe(out_splitter)
@property
def pipes(self):
return self.__pipes
def add_pipe(self, pn):
if isinstance(pn, basestring):
if pn == 'stderr': x = sys.stderr
elif pn == 'stdout': x = sys.stdout
else:
p = os.path.dirname(pn)
if p and not os.path.exists(p):
os.makedirs(p)
try:
x = open(pn,'w+')
except IOError:
raise
else: x = pn
if hasattr(x, 'write') and hasattr(x, 'flush'):
if self.__pipes is None:
self.__pipes=Set()
self.__pipes.add(x)
def write(self,s):
if self.__pipes:
for p in self.__pipes:
p.write(s)
def flush(self):
if self.__pipes:
for p in self.__pipes:
p.flush()
#def __enter__(self):
# pass
#def __exit__(self, exc_type, exc_value, traceback):
# pass
if __name__ == '__main__':
cout=sys.stdout if True else sys.stderr
o=OutputSplitter(cout)
pass
Испаравленная версия по монивам http://govnokod.ru/17181. Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.