Reputation: 497
Trying to avoid nested for loops but I'm unsure how I shall use words = x.split()
and words[y:y+n]
inside the one liner.
n = 1
for x in data:
words = x.split()
for y in range(len(words)-n+1):
print(words[y:y+n])
So far I'm working with the following:
data = ' '.join([(x, y) for x in data words = x.split() for y in range(len(words)-n+1) words[y:y+n]])
Upvotes: 1
Views: 82
Reputation: 1427
n = 1
for x in data:
words = x.split()
for y in range(len(words)-n+1):
print(words[y:y+n])
n is never changed so always 1
for x in data:
words = x.split()
for y in range(len(words)-1+1):
print(words[y:y+1])
so simplify that
for x in data:
words = x.split()
for y in range(len(words)):
print(words[y])
which is basically
for x in data:
for word in x.split():
print(word)
which get us to
data=' '.join(word for x in data for word in x.split())
Upvotes: 0
Reputation: 107124
A workaround to assigning a temporary variable is to iterate over a 1-tuple instead:
data = ' '.join(words[y:y+n] for x in data for words in (x.split(),) for y in range(len(words)-n+1))
Upvotes: 1