On Wednesday, December 24, 2014 8:42:32 PM UTC+5:30, Vito De Tullio wrote: > Seb wrote: > > >>>> def n_grams(a, n): > > ... z = (islice(a, i, None) for i in range(n)) > > ... return zip(*z) > > ... > > > > I'm impressed at how succinctly this islice helps to build a list of > > tuples with indices for all the required windows. > > If you want it succinctly, there is this variation on the theme: > > n_grams = lambda a, n: zip(*(a[i:] for i in range(n)))
+3 but -1 +1 for using an inlining the z +1 for showing that the * can take any expression [I did not know that] +1 for the slice in succinct form -1 for the lambda -- quite unnecessary and a red-herring If squeezing out the last char is the idea n_grams = lambda a, n: zip(*(a[i:] for i in range(n))) is same as def n_grams(a,n):return zip(*(a[i:]for i in range(n))) -- https://mail.python.org/mailman/listinfo/python-list