Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import itertools
- import functools
- def powerlist(l):
- indexes = {}
- for i, e in enumerate(l):
- indexes[e] = i
- combos = []
- for i in range(1, len(l) + 1):
- combos = combos + list(list(tup) for tup in itertools.combinations(l, i))
- def compare(item1, item2):
- if indexes[item1[-1]] < indexes[item2[-1]]:
- return -1
- elif indexes[item1[-1]] > indexes[item2[-1]]:
- return 1
- else:
- if len(item1) < len(item2):
- return -1
- elif len(item1) > len(item2):
- return 1
- else:
- for i in range(len(item1) - 1, -1, -1):
- if indexes[item1[i]] < indexes[item2[i]]:
- return -1
- elif indexes[item1[i]] > indexes[item2[i]]:
- return 1
- return 0
- combos.sort(key=functools.cmp_to_key(compare))
- combos = [[]] + combos
- return combos
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement