Apr-19-2024, 02:44 PM
def my_join(*iterables, my_joiner=None): if not iterables: return #yield from iterables[0] # The same as the loop under for item in iterables[0]: yield item for iterable in iterables[1:]: yield my_joiner yield from iterable list1 = list(my_join([1, 2, 3], [4, 5], [6, 7], my_joiner=9999)) print(list1) list2 = list(my_join([1, 2, 3], [4, 5], [6, 7], my_joiner='***')) print(list2) # Now i have made a default argument <None> so now dos this work list3 = list(my_join([1, 2, 3], [4, 5], [6, 7])) print(list3)
Output:[1, 2, 3, 9999, 4, 5, 9999, 6, 7]
[1, 2, 3, '***', 4, 5, '***', 6, 7]
[1, 2, 3, None, 4, 5, None, 6, 7
yield from was new in Python 3.3.As see in code i have comment it out,and write same code as a loop