# Test drop_last e-->\'\'.join([v for v in drop_last(\'combustible\', 5)])-->com
ID: 3607381 • Letter: #
Question
# Test drop_last
e-->''.join([v for v in drop_last('combustible', 5)])-->combus
e-->''.join([v for v in drop_last(hide('combustible'), 5)])-->combus
e-->''.join([v for v in drop_last(hide('combustible'), 3)])-->combusti
e-->''.join([v for v in drop_last(hide('combustible'), 10)])-->c
# Test yield_and_skip
e-->''.join([v for v in yield_and_skip('abbabxcabbcaccabb',lambda x : {'a':1,'b':2,'c':3}.get(x,0))])-->abxccab
e-->''.join([v for v in yield_and_skip(hide('abbabxcabbcaccabb'),lambda x : {'a':1,'b':2,'c':3}.get(x,0))])-->abxccab
e-->''.join([v for v in yield_and_skip(hide('abxcbbacbbbaxbbaab'),lambda x : {'a':1,'b':2,'c':3}.get(x,0))])-->axccaba
def hide(iterable):
for v in iterable:
yield v
Explanation / Answer
def drop_last(iterable, n):
iterator = iter(iterable)
try:
nlist = [next(iterator) for i in range(n)]
while True:
try:
nlist.append(next(iterator))
element = nlist[0]
nlist = nlist[1:]
yield element
except StopIteration:
break
except StopIteration:
return
def hide(iterable):
for v in iterable:
yield v
print(''.join([v for v in drop_last('combustible', 5)]))
print(''.join([v for v in drop_last(hide('combustible'), 5)]))
print(''.join([v for v in drop_last(hide('combustible'), 3)]))
print(''.join([v for v in drop_last(hide('combustible'), 10)]))
def yield_and_skip(iterable, skip_func):
iterator = iter(iterable)
while True:
try:
a = next(iterator)
yield a
count = skip_func(a)
for i in range(count):
a = next(iterator)
except StopIteration:
break
print(''.join([v for v in yield_and_skip('abbabxcabbcaccabb',lambda x : {'a':1,'b':2,'c':3}.get(x,0))]))
print(''.join([v for v in yield_and_skip(hide('abbabxcabbcaccabb'),lambda x : {'a':1,'b':2,'c':3}.get(x,0))]))
print(''.join([v for v in yield_and_skip(hide('abxcbbacbbbaxbbaab'),lambda x : {'a':1,'b':2,'c':3}.get(x,0))]))
# sample execution
'''
'''
# copy pastable code link: https://paste.ee/p/loolk
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.