def nfind(links, args): larg, rarg = args larg_iterable = type(larg) in (list, str) i = 0 if larg_iterable else larg matches = variadic_link(links[1], args) if len(links) == 2 else last_input() found = [] while len(found) < matches: try: cur_larg = larg[i] if larg_iterable else i except IndexError: break if variadic_link(links[0], (cur_larg, rarg)): found.append(cur_larg) i += 1 return found