For a lot of data, you should consider whether you need to keep it all in a list. If you are processing each one at a time, you can create a generator that will yield each joined string, but won’t keep them all around taking up memory:
new_data = (' '.join(w) for w in sixgrams)
if you can get the original tuples also from a generator, then you can avoid having the sixgrams
list in memory as well.