Python Forum
Changing a variable's name on each iteration of a loop
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Changing a variable's name on each iteration of a loop
#1
Is it possible in python to change the name of a variable on each iteration of a loop? For example:
for i in range(10):
    variableNameToChange+i="iterationNumber=="+str(i)
I know this won't work, and you can't assign to an operator, but how would you change / add to the name of a variable on each iteration of a loop, if it's possible?
Reply
#2
You would be creating a debugging nightmare. But, if I was going to try such an abomination I would break out my copy of the Necronomicon and write code that writes itself. In more detail. Write a section of code that writes the modified Python code to a file. Then import the file and execute the code, which writes the next iteration to the file, imports, then executes, indefinitely. Possible endless loops that involve your hard drive, all kinds of odd things can happen. Black magic.
Reply
#3
(Jan-03-2020, 01:18 AM)jefsummers Wrote: You would be creating a debugging nightmare. But, if I was going to try such an abomination I would break out my copy of the Necronomicon and write code that writes itself. In more detail. Write a section of code that writes the modified Python code to a file. Then import the file and execute the code, which writes the next iteration to the file, imports, then executes, indefinitely. Possible endless loops that involve your hard drive, all kinds of odd things can happen. Black magic.
are you suggesting the use of the "open()" function?
Reply
#4
(Jan-03-2020, 01:06 AM)rix Wrote: Is it possible in python to change the name of a variable on each iteration of a loop? For example:
for i in range(10):
    variableNameToChange+i="iterationNumber=="+str(i)
I know this won't work, and you can't assign to an operator, but how would you change / add to the name of a variable on each iteration of a loop, if it's possible?

You can totally make variable names dynamically. Python is infinitely reflective.

In this case you do not need to dig so deep though.

Just make a dictionary, use the variable names as keys and the intended. Then when you created all of the "variables" that you need, just update them to the locals "dictionary"(symbol table).

var_holder = {}

for i in range(10):
    var_holder['my_var_' + str(i)] = "iterationNumber=="+str(i)

locals().update(var_holder)

print(my_var_0)
Please note this solution does not require black magic, a unicorn, or an enchanted debugger.
Reply
#5
(Jan-03-2020, 03:41 AM)Clunk_Head Wrote:
(Jan-03-2020, 01:06 AM)rix Wrote: Is it possible in python to change the name of a variable on each iteration of a loop? For example:
for i in range(10):
    variableNameToChange+i="iterationNumber=="+str(i)
I know this won't work, and you can't assign to an operator, but how would you change / add to the name of a variable on each iteration of a loop, if it's possible?

You can totally make variable names dynamically. Python is infinitely reflective.

In this case you do not need to dig so deep though.

Just make a dictionary, use the variable names as keys and the intended. Then when you created all of the "variables" that you need, just update them to the locals "dictionary"(symbol table).

var_holder = {}

for i in range(10):
    var_holder['my_var_' + str(i)] = "iterationNumber=="+str(i)

locals().update(var_holder)

print(my_var_0)
Please note this solution does not require black magic, a unicorn, or an enchanted debugger.
I do not quite understand if you understand what I meant, or maybe I'm not advanced enough to completely understand what the code you have included in your reply does, but either way, this is a lot more complicated than I thought, and I only learned that dictionaries existed yesterday. Doh Maybe I'll just have to keep trying to understand it or become more familiar with dictionaries and then try and finish my task of trying to change a variable's name on each iteration of a loop.

Maybe the code you've sent does actually technically create variables with different names on each iteration, but it's not exactly what I was looking for, but I'll try to make it work as I was trying to do.
Reply
#6
(Jan-03-2020, 03:52 AM)rix Wrote: I do not quite understand if you understand what I meant, or maybe I'm not advanced enough to completely understand what the code you have included in your reply does, but either way, this is a lot more complicated than I thought, and I only learned that dictionaries existed yesterday. Doh Maybe I'll just have to keep trying to understand it or become more familiar with dictionaries and then try and finish my task of trying to change a variable's name on each iteration of a loop.

Maybe the code you've sent does actually technically create variables with different names on each iteration, but it's not exactly what I was looking for, but I'll try to make it work as I was trying to do.

What are you trying to do?
Why do you need to change variable names at each iteration of a loop?
Do the variables already exist?
Reply
#7
If you are in learning process then you should learn this: don't create variables dynamically. Why? Presumably you want to access them dynamically as well.

If you need to create values dynamically use some other Python data structure: dictionary (as suggested by Clunk_Head) or namedtuple or list or something else.

You can learn how to create variables dynamically and why it's considered 'shooting yourself in the foot' from Why you don't want to dynamically create variables
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Variable definitions inside loop / could be better? gugarciap 2 375 Jan-09-2024, 11:11 PM
Last Post: deanhystad
  How to create a variable only for use inside the scope of a while loop? Radical 10 1,528 Nov-07-2023, 09:49 AM
Last Post: buran
  Inconsistent loop iteration behavior JonWayn 2 956 Dec-10-2022, 06:49 AM
Last Post: JonWayn
  Nested for loops - help with iterating a variable outside of the main loop dm222 4 1,532 Aug-17-2022, 10:17 PM
Last Post: deanhystad
  loop (create variable where name is dependent on another variable) brianhclo 1 1,104 Aug-05-2022, 07:46 AM
Last Post: bowlofred
  Multiple Loop Statements in a Variable Dexty 1 1,176 May-23-2022, 08:53 AM
Last Post: bowlofred
Big Grin Variable flag vs code outside of for loop?(Disregard) cubangt 2 1,131 Mar-16-2022, 08:54 PM
Last Post: cubangt
  Keeping a value the same despite changing the variable it was equated to TheTypicalDoge 2 1,433 Mar-13-2022, 10:50 PM
Last Post: Yoriz
  How to save specific variable in for loop in to the database? ilknurg 1 1,113 Mar-09-2022, 10:32 PM
Last Post: cubangt
  How to add for loop values in variable paulo79 1 1,411 Mar-09-2022, 07:20 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020