daniel stafford
daniel stafford

Reputation: 231

Saving a for loop output into a variable

For example given the following for loop:

for i in range(3):
    print(i, '->',i+1)

Gives the output:

0 -> 1
1 -> 2
2 -> 3

How could I save this output in string form such that it is saved in a variable.

So for example could say print(my_variable) and the output is as the above output.

Edit Given the following list:

[['ORGANIZATION', 'EDUCATION', 'UniversityWon', 'FormMathematics'], ['PERSON', 'Sixth', 'Economics'], ['GPE', 'FrenchUK', 'London']]

I have the following for loop that prints them in the desired way:

for i in output:
    print(i[0], '->', ', '.join(i[1:]))

Output of:

ORGANIZATION -> EDUCATION, UniversityWon, FormMathematics
PERSON -> Sixth, Economics
GPE -> FrenchUK, London

How can i save this output into a variable such that if i executed print(variable), the above output would be printed?

Upvotes: 0

Views: 1282

Answers (2)

Richard
Richard

Reputation: 425

You can use an f-string like this:

result = ""

for i in range(3):
    result += f"{i} -> {i + 1}\n"

print(result)

Upvotes: 0

Chris
Chris

Reputation: 36496

A list comprehension can be used to generate the individual strings.

[f"{i} -> {i + 1}" for i in range(3)]

We can then join those with newlines.

"\n".join([f"{i} -> {i + 1}" for i in range(3)])

But we don't need to use a list comprehension here. A generator expression will be more efficient as it doesn't generate an entire list first and then iterate over that list.

"\n".join(f"{i} -> {i + 1}" for i in range(3))

If every line need to end in a newline, you can factor that into the f-string and then join them with an empty string.

''.join(f"{i} -> {i + 1}\n" for i in range(3))

Upvotes: 1

Related Questions