@@ -444,6 +444,7 @@ def table2str(table, missing, fullinfo=False):
444
444
lines .extend (newlines )
445
445
return '\n ' .join (' | ' .join (row ) for row in lines )
446
446
447
+
447
448
def table2csv (table , sep , missing , collapsed = 0 ):
448
449
'''table is a list of lists'''
449
450
if not table :
@@ -523,9 +524,11 @@ def __str__(self):
523
524
# copied from itertools recipes
524
525
def unique (iterable ):
525
526
"""
526
- List all elements once, preserving order. Remember all elements ever seen.
527
+ Yields all elements once, preserving order. Remember all elements ever
528
+ seen.
529
+ >>> list(unique('AAAABBBCCDAABBB'))
530
+ ['A', 'B', 'C', 'D']
527
531
"""
528
- # unique('AAAABBBCCDAABBB') --> A B C D
529
532
seen = set ()
530
533
seen_add = seen .add
531
534
for element in iterable :
@@ -536,10 +539,13 @@ def unique(iterable):
536
539
537
540
def duplicates (iterable ):
538
541
"""
539
- List duplicated elements once, preserving order. Remember all elements ever
540
- seen.
542
+ Yields duplicated elements once, preserving order. Remember all elements
543
+ ever seen.
544
+ >>> list(duplicates('AAAABBBCCDAABBB'))
545
+ ['A', 'B', 'C']
546
+ >>> list(duplicates('ABBAAABBBCCDAABBB'))
547
+ ['B', 'A', 'C']
541
548
"""
542
- # duplicates('AAAABBBCCDAABBB') --> A B C
543
549
counts = defaultdict (int )
544
550
for element in iterable :
545
551
counts [element ] += 1
@@ -551,8 +557,9 @@ def unique_duplicate(iterable):
551
557
"""
552
558
List all elements once and duplicated elements, preserving order.
553
559
Remember all elements ever seen.
560
+ >>> unique_duplicate('AAAABBBCCDAABBB')
561
+ [A, B, C, D], [A, B, C]
554
562
"""
555
- # unique_duplicate('AAAABBBCCDAABBB') --> [A, B, C, D], [A, B, C]
556
563
counts = {}
557
564
uniques = []
558
565
dupes = []
0 commit comments