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)
My code examples are always for Python >=3.6.0
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
  adding numbers in a list Nickd12 2 321 Jan-15-2021, 12:46 PM
Last Post: Serafim
  Print max numbers in a list jimmoriarty 1 407 Sep-25-2020, 07:29 AM
Last Post: DPaul
  importing a list of numbers into python script barrypyth 8 976 Aug-22-2020, 09:10 PM
Last Post: barrypyth
  Summing a list of numbers Oldman45 6 701 Jul-12-2020, 05:30 PM
Last Post: Oldman45
  How do I calculate a ratio from 2 numbers and return an equivalent list of about 1000 Pleiades 6 5,075 Jul-01-2020, 03:53 PM
Last Post: ndc85430
  Topic: “Filter numbers with a list comprehension” (PyBite #107) Drone4four 4 678 Jun-11-2020, 08:31 PM
Last Post: Drone4four
  Assign the sum of 2 consecutive numbers in a list to a varibale Fenaz 3 706 Apr-05-2020, 10:30 PM
Last Post: bowlofred
  output a list of random numbers 'x' columns wide adityavpratap 4 776 Jan-13-2020, 05:32 PM
Last Post: perfringo
  Generating numbers darktitan 3 710 Dec-01-2019, 06:25 PM
Last Post: darktitan
  Subtract 11 from entire list of quoted numbers Pleiades 1 593 Nov-14-2019, 10:26 AM
Last Post: Larz60+

Forum Jump:

User Panel Messages

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