def test_nth(): l = list([1, 2, 3]) i = iter([1, 2, 3]) assert_that(nth(2, l)).is_equal_to(3) assert_that(nth(2, l)).is_equal_to(3) assert_that(nth(2, i)).is_equal_to(3) #Can do only once for the iter assert_that(last(l)).is_equal_to(nth(len(l) - 1, l))
def test_nth(): assert nth(2, 'ABCDE') == 'C' assert nth(2, iter('ABCDE')) == 'C' assert nth(1, (3, 2, 1)) == 2 assert nth(0, {'foo': 'bar'}) == 'foo' assert raises(StopIteration, lambda: nth(10, {10: 'foo'})) assert nth(-2, 'ABCDE') == 'D' assert raises(ValueError, lambda: nth(-2, iter('ABCDE')))
def nth(expr, env): try: return nth(expr.n, eval(expr.coll, env)) except StopIteration: return None
def gap_fill_ref(original_ref, new_ref, pileup_positions, offs, off_pos, off): raw_missings = set(xrange(1, len(original_ref)+1)) - set(pileup_positions) missings = reduce(drop_gaps_because_insertion_offsets, izip(offs, off_pos), raw_missings) gap_filled = reduce(insert_gap, imap(lambda x: x - 1, missings), new_ref) return nth(off, iterate(lambda s: s[:-1] if s[-1] == '-' else s, gap_filled))