请问如何用python生成器写这样的组合算法function?

请问如何用python生成器写这样的组合算法function?
要求不import任何package,三个分开的,谢谢!

list(prefixes([1, 2, 3]))
[[], [1], [1, 2], [1, 2, 3]]

list(prefixes("abc"))
['', 'a', 'ab', 'abc']

list(suffixes([1, 2, 3]))
[[1, 2, 3], [2, 3], [3], []]

list(suffixes("abc"))
['abc', 'bc', 'c', '']

list(slices([1, 2, 3]))
[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]

list(slices("abc"))
['a', 'ab', 'abc', 'b', 'bc', 'c']

prefixes、suffixes,循环切片取0 1 2 3...个
slices就是把前两者组合下,先prefixes,对每个再suffixes
写成生成器就用 yield 即可。