? main make_a_list , . , test flatten , . , .
def main():
obj = 1
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)))
obj = {1, 2, 3}
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)))
obj = [1, 2, 3]
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)))
obj = [1]
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)))
obj = 'a', 'b', 'c'
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)))
obj = {1: 2, 3: 4, 5: 6}
print('make_a_list({!r}) = {!r}'.format(obj, make_a_list(obj)), end='\n\n')
def make_a_list(obj):
if isinstance(obj, dict):
return make_a_list(list(obj.keys())) + make_a_list(list(obj.values()))
if isinstance(obj, list):
if len(obj) > 1:
return make_a_list(obj[0]) + make_a_list(obj[1:])
return obj
return [obj]
def test():
obj = 1
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
obj = {1, 2, 3}
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
obj = [1, 2, 3]
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
obj = [1]
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
obj = 'a', 'b', 'c'
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
obj = {1: 2, 3: 4, 5: 6}
print('list(flatten({!r})) = {!r}'.format(obj, list(flatten(obj))))
def flatten(iterable):
if isinstance(iterable, (list, tuple, set, frozenset)):
for item in iterable:
yield from flatten(item)
elif isinstance(iterable, dict):
for item in iterable.keys():
yield from flatten(item)
for item in iterable.values():
yield from flatten(item)
else:
yield iterable
if __name__ == '__main__':
main()
test()