I have some code which takes input from the user and stores it in a list. The list may have an odd or even number of elements, for example:
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork'] (even number of elements)
or my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes'] (odd number of elements)
I want to store my_list in a string variable, such so that when I print(var) or create a tkinter messagebox, my program will output two columns like this:
-- Beef --Chicken
-- Eggs --Lamb
-- Nuts --Pork
-- Potatoes
I know how to manipulate the strings, but I'm stuck on creating the columns. I have tried this:
for x,y in zip(my_list[0::2], my_list[1::2]):
print("{0} {1}".format(x, y))
But that doesn't work for lists of odd-number length. I have also tried the more complicated:
#When my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes']
list1 = []
list2 = []
while len(my_list) != 0:
list1.append(my_list[0])
my_list.pop(0)
if len(my_list) == 0:
list2.append('')
else:
list2.append(my_list[0])
my_list.pop(0)
for i in range (len(list1)):
blank_space = 40 - len(list1[i-1])
string2 = "\n--" + list1[i] + ' '*blank_space + '--' + list2[i]
string1 = string1 + string2
print(string1)
but the output I get is like this:
--Beef --Chicken
--Eggs --Lamb
--Nuts --Pork
--Potatoes --
which doesn't align the columns correctly.
Besides splitting it into columns, it is also important that the output is in the form:
--Element1 --Element2
--Element3 --Element4
and not in any other form. I'd really appreciate any help on where I'm making my mistake. If you need anymore clarification just tell me and I will add it into my question.
EDIT: The function will have to work for all these lists:
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork']
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes']
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes','Dairy']
my_list = ['Australian Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes','Dairy']
SECOND EDIT
I have finally realized why sometimes it doesn't align. The number of spaces is correct, so all of your answers are correct. Unfortunately because some letters are thinner than others, the columns will not be nicely aligned (at least in Python IDLE and Tkinter). For example, iiii is shorter than mmmm in Python. Is there a way to get around this?