1
|
# Lists
|
2
|
|
3
|
import operator
|
4
|
|
5
|
def is_seq(value):
|
6
|
return (isinstance(value, list) or isinstance(value, tuple)
|
7
|
or isinstance(value, set))
|
8
|
|
9
|
def mk_seq(value):
|
10
|
if not is_seq(value): value = [value]
|
11
|
return value
|
12
|
|
13
|
def clear(list_):
|
14
|
while True:
|
15
|
try: list_.pop()
|
16
|
except IndexError: break
|
17
|
|
18
|
def and_(list_): return reduce(operator.and_, map(bool, list_), True)
|
19
|
|
20
|
def or_(list_): return reduce(operator.or_, map(bool, list_), False)
|
21
|
|
22
|
def uniqify(list_):
|
23
|
'''Removes duplicates from an iterable. Preserves order.'''
|
24
|
existing = set()
|
25
|
new_list = []
|
26
|
for value in list_:
|
27
|
if value not in existing:
|
28
|
existing.add(value)
|
29
|
new_list.append(value)
|
30
|
return new_list
|