Python Forum
How do I name a list while generating numbers on the fly? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: How do I name a list while generating numbers on the fly? (/thread-22916.html)



How do I name a list while generating numbers on the fly? - Pleiades - Dec-03-2019

I use this code and it generates numbers in the list, but I would also like it create this name along with it for the list name.

This is the name I hoping for:

lst1z


So here is my code Thanks:

composites=[]
n = int(input("Enter any number : "))
positive_n = abs(n)
for num in range(positive_n+1):
    if num > 1:
        for i in range(1, num,1):
            if (num % i) == 0:
                if n > 0:
                    composites.append(num)
                else:
                    composites.append(-num)
                break
print ("\ncomposites from", int(positive_n / n), " to ", n, "\n", composites)



RE: How do I name a list while generating numbers on the fly? - buran - Dec-03-2019

It's a really bad idea to construct variable names on the fly. Don't do it, just use a proper data structure if you are dealing with multiple lists


RE: How do I name a list while generating numbers on the fly? - Pleiades - Dec-03-2019

(Dec-03-2019, 11:04 AM)buran Wrote: It's a really bad idea to construct variable names on the fly. Don't do it, just use a proper data structure if you are dealing with multiple lists
I'm just constructing one list and I would like to know if this is possible. Or how can I just edit the current code to write a list name into it.

The code does this:

[1,2,3,4]

However I want the code to name it too this while generating the numbers.

lst1z = [1,2,3,4]


RE: How do I name a list while generating numbers on the fly? - DeaD_EyE - Dec-03-2019

You could create names on the fly.
globals()['my_variable'] = 42
But this is not Pythonic. (ugly code)

Better is to use the right data structure for it.

my_dict = {}
my_dict['my_list1'] = list(range(1, 11))
my_dict['my_list2'] = list(range(11, 21))

print(my_dict)



RE: How do I name a list while generating numbers on the fly? - buran - Dec-03-2019

in your code the variable is composites. if you want it to be something else, use that instead, e.g. lst1z.
DeaD_EyE show what I refer to as using proper data structure, but it is really worth it when there is more than one list. Otherwise just use the nice descriptive name that you want to use, just don't create it on the fly


RE: How do I name a list while generating numbers on the fly? - Pleiades - Dec-03-2019

Ok this is what I received from stackexchange and then I edited it to get this far. The lst1z is enumerated but I don't have an enumerated lst1z with quotes. Can anyone edit my code.

This is my desired output:

lst1z = [0, '2', 1, '3', 2, '4']

composites=[]

n = int(input("Enter any number : "))
positive_n = abs(n)
for num in range(positive_n+1):
    if num > 1:
        for i in range(1, num,1):
            if (num % i) == 0:
                if n > 0:
                    composites.append(num)
                else:
                    composites.append(-num)
                break

            
list1z = composites
print("\ncomposites from {} to {} \n list1z = {}".format(int(positive_n/n), n, list1z))




final_list = list()
for index, i in enumerate(list1z):
    final_list.append(index)
    final_list.append(i)
    
listz = composites
print("\ncomposites from {} to {} \n list1z = {}".format(int(positive_n/n), n, final_list))

list1z = composites
print("\ncomposites from {} to {} \n list1z = {}".format(int(positive_n/n), n, ([str(i) for i in list1z])))
#print([str(i) for i in list1z])



RE: How do I name a list while generating numbers on the fly? - jefsummers - Dec-03-2019

Another thought, not necessarily a good thought, is having your code write itself. You could then create, well, anything on the fly.
squares = [x*x for x in range(10)]
modle = 'modle.py'
with open(modle,'w') as foofile :
    foofile.write('class Modle() :\n')
    foofile.write('    def pnt(self,lstary) :\n')
    foofile.write('        print(lstary)\n')

from modle import Modle
foo = Modle()
foo.pnt(squares)
The main body creates a file, writes a class and method definition to it, and then imports it and runs it.
Advantage to interpreted languages.