On Thu, Oct 2, 2014 at 5:15 PM, kracekumar ramaraju <kracethekingma...@gmail.com> wrote: > Hi > > `yield from ` is introduced in Python 3.3 as part of pep 380. > > # python 3.3 > > from collections import Iterable > > def flatten(items): > for item in items: > if isinstance(item, Iterable): > yield from flatten(item) > else: > yield item
Yield from approach is great if you're using python 3.3+ :) > > list(flatten([[1, 2, [3]], 4])) > [1, 2, 3, 4] > > # python 2.7 > > from collections import Iterable > > x = [[1, 2, [3]], 4] > > def flatten(items): > for item in items: > if isinstance(item, Iterable): > for subitem in flatten(item): > yield subitem > else: > yield item > ....: > > list(flatten(x)) > [1, 2, 3, 4] Also you may need to check whether the item is not a string or bytes or a string in the list will break this, an isinstance(item, Iterable) and not isinstance(item,str) # maybe bytes too should handle that -- Abhishek _______________________________________________ BangPypers mailing list BangPypers@python.org https://mail.python.org/mailman/listinfo/bangpypers