def strange_sort(items): unique = sorted(set(items)) return [unique[i % len(unique)] for i in range(len(items))] items = [1, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3] print strange_sort(items) # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
def strange_sort(items): unique = sorted(set(items)) return [unique[i % len(unique)] for i in range(len(items))] items = [1, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3] print strange_sort(items) # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
from collections import Counter def strange_sort(items): count = Counter(items) unique = sorted(count.keys()) result = [] while count: for item in unique: count[item] -= 1 if count[item] < 0: del count[item] else: result.append(item) return result items = [1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3] print strange_sort(items) # [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 1, 1, 1]
>>> date = ['aaa', 'ddd', 'ddd', 'ddd', 'ddd', 'aaa', 'aaa', 'aaa', 'ccc', 'ccc', 'ccc', 'ccc'] >>> >>> def f(lst): ... out = [] ... uni = set() ... for i in lst: ... if i not in uni: ... uni.add(i) ... out.append(i) ... return len(lst) // len(out) * out ... >>> print(f(date)) ['aaa', 'ddd', 'ccc', 'aaa', 'ddd', 'ccc', 'aaa', 'ddd', 'ccc', 'aaa', 'ddd', 'ccc'] >>>
>>> from itertools import chain, izip_longest, groupby
>>> date = ['aaa', 'ddd', 'aaa', 'aaa', 'aaa', 'ccc', 'ccc']
>>> filter(None, chain.from_iterable(izip_longest(*(list(x[1]) for x in groupby(sorted(date))))))
['aaa', 'ccc', 'ddd', 'aaa', 'ccc', 'aaa', 'aaa'
Для чего это используется?