def main():
print encode_modified("a") == None
print encode_modified([]) == []
print encode_modified(["a"]) == ["a"]
print encode_modified(["a", "b"]) == ["a", "b"]
print encode_modified(["a", "a", "b"]) == [[2, "a"], "b"]
print encode_modified(["a", "a", "b", "b"]) == [[2, "a"], [2, "b"]]
print encode_modified(["a", "a", "b", "b", "a"]) == [[2, "a"], [2, "b"], "a"]
print encode_modified(["a", "a", "a", "a", "b", "c", "c", "a", "a", "d", "e", "e", "e", "e"]) == [[4, "a"], "b", [2, "c"], [2, "a"], "d", [4, "e"]]
def encode_modified(lista):
pack_l = pack(lista)
return [[len(v), v[0]] if len(v) > 1 else v[0] for v in pack_l] if pack_l else pack_l
def pack(lista):
return reduce(appender2pack, lista, []) if isinstance(lista, list) else None
def appender2pack(l, v):
if l:
if v in l[-1]:
l[-1].append(v)
else:
l.append([v])
else:
l.append([v])
return l
if __name__ == "__main__":
main()