How can I make many empty lists without manually typing the following?
list1=[], list2=[], list3=[]
Is there a for loop that will make me 'n' number of such empty lists?
How can I make many empty lists without manually typing the following?
list1=[], list2=[], list3=[]
Is there a for loop that will make me 'n' number of such empty lists?
A list comprehension is easiest here:
>>> n = 5
>>> lists = [[] for _ in range(n)]
>>> lists
[[], [], [], [], []]
Be wary not to fall into the trap that is:
>>> lists = [[]] * 5
>>> lists
[[], [], [], [], []]
>>> lists[0].append(1)
>>> lists
[[1], [1], [1], [1], [1]]
If you want to create different lists without a "list of lists", try this:
list1, list2, list3, list4 = ([] for i in range(4))
Look up list comprehensions:
listOfLists = [[] for i in range(N)]
Now, listOfLists
has N empty lists in it.
More links on list comprehensions:
I see that many answers here get you many lists with no names assigned (as elements of a larger list). This may be not always what's needed.
It is possible to create multiple empty lists, each with a different name/value, using a tuple:
a,b,c = ([],[],[])
Changing this structure should get you what you want.
Use this:
def mklist(n):
for _ in range(n):
yield []
Usage:
list(mklist(10))
[[], [], [], [], [], [], [], [], [], []]
a, b, c = mklist(3) # a=[]; b=[]; c=[]
The code below will dynamically 'create' itself. For every iteration, the following command will issued:
listnumber = []
Where number is the value of i in the loop.
x = 3 # Amount of lists you want to create
for i in range(1, x+1):
command = "" # This line is here to clear out the previous command
command = "list" + str(i) + " = []"
exec(command)
The result of this particular piece of code is three variables: list1, list2 and list3 being created and each assigned an empty list.
You can generalize this to make practically anything you want. Do note that you cannot put this into a function as far as I know, because of how variables and global variables work.
name = "my_var" # This has to be a string, variables like my_var1, my_var2 will be created.
value = "[]" # This also has to be a string, even when you want to assign integers! When you want to assign a string "3", you'd do this: value = "'3'"
amount = 5 # This must be an integer. This many variables will be created (my_var1, my_var2 ... my_var5).
for i in range(1, amount+1):
command_variable = ""
command_variable = name + str(i) + " = " + value
exec(command_variable)
Or as simple as
added, modified, removed, inactive = ([],) * 4
You can also add a list of list of list of list... like this too. It won't return any error. But I haven't got any idea what it's used for.
n = 5
>>> lists = [[[]]] for _ in range(n)]
>>> lists
[[[[]]], [[[]]], [[[]]], [[[]]], [[[]]]]