Python Forum
How do I name a list while generating numbers on the fly?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How do I name a list while generating numbers on the fly?
#1
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)
Reply
#2
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
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
(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]
Reply
#4
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)
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#5
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
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#6
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])
Reply
#7
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How do I calculate a ratio from 2 numbers and return an equivalent list of about 1000 Pleiades 8 15,629 Jan-05-2024, 08:30 PM
Last Post: sgrey
  find random numbers that are = to the first 2 number of a list. Frankduc 23 3,181 Apr-05-2023, 07:36 PM
Last Post: Frankduc
  List of random numbers astral_travel 17 2,692 Dec-02-2022, 10:37 PM
Last Post: deanhystad
  Remove numbers from a list menator01 4 1,320 Nov-13-2022, 01:27 AM
Last Post: menator01
  [split] why can't i create a list of numbers (ints) with random.randrange() astral_travel 7 1,505 Oct-23-2022, 11:13 PM
Last Post: Pedroski55
  Divide a number by numbers in a list. Wallen 7 8,012 Feb-12-2022, 01:51 PM
Last Post: deanhystad
  producing numbers out of a list bouraque7878 10 3,734 Nov-12-2021, 09:13 PM
Last Post: jefsummers
  How to change odd to even numbers in the list? plumberpy 8 3,711 Aug-08-2021, 11:07 AM
Last Post: plumberpy
  convert numbers into list lokesh 1 2,375 Jun-03-2021, 06:37 AM
Last Post: menator01
  adding numbers in a list Nickd12 2 2,186 Jan-15-2021, 12:46 PM
Last Post: Serafim

Forum Jump:

User Panel Messages

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