Reputation: 19
I am trying to get this output here:
Team C RTO
1 Aug 22
Ayu
Start: 6:00 AM
1st Break: 7:15 AM
Meal: 9:00 AM
2nd Break: 1:00 PM
End: 3:00 PM
The literal code is here which is manual and not efficient.
print(elements_csvdata[2][0])
print(elements_csvdata[2][1])
print(elements_csvdata[3][1])
print(elements_csvdata[2][2] + ": " + elements_csvdata[3][2])
print(elements_csvdata[2][3] + ": " + elements_csvdata[3][3])
print(elements_csvdata[2][4] + ": " + elements_csvdata[3][4])
print(elements_csvdata[2][5] + ": " + elements_csvdata[3][5])
print(elements_csvdata[2][6] + ": " + elements_csvdata[3][6])
This is what I have tried:
print(elements_csvdata[2][0])
print(elements_csvdata[2][1])
print(elements_csvdata[3][1])
for element in elements_csvdata(1,7):
print(elements_csvdata[2][element + 1] + ": " + elements_csvdata[3][element + 1])
The error that I am getting is:
TypeError: 'list' object is not callable
My question is if you were to see the original manual code, how would you clean it up to get rid of the repetition? I know a for loop and a function are in order but I can't figure out how to use a nested for loop for this.
elements_csvdata is an empty list that I have populated from a csv file.
print(elements_csvdata[2]) will give this output:
['Team C RTO', '1 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '2 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '3 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '4 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '5 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End']
print(elements_csvdata[3])
will give this output:
['1', 'Ayu', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Riana', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Aria', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Aza', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Ayu', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM']
Would really appreciate any help. Thanks.
Upvotes: 0
Views: 46
Reputation: 16081
You can use range
here,
for index in range(2,7):
print(elements_csvdata[2][index] + ": " + elements_csvdata[3][index])
Another attempt with zip
,
el2 = elements_csvdata[2] # renamed for the easy of use
el3 = elements_csvdata[3] # renamed for the easy of use
print(el2[0])
print(el2[1])
print(el3[1])
events = [' : '.join(i) for i in zip(el2[2:7], el3[2:7])]
for event in events:
print(event)
Ouput:
Team C RTO
1 Aug 22
Ayu
Start : 6:00 AM
1st Break : 7:15 AM
Meal : 9:00 AM
2nd Break : 1:00 PM
End : 3:00 PM
Upvotes: 2
Reputation: 716
elements_csvdata
is a 2 dimensional list
. We use round brackets ()
for calling a function. So, when the interpreter tries to run the code: elements_csvdata(1,7)
, it takes elements_csvdata
as a function
but it is actually not.
That's why you are getting
TypeError: 'list' object is not callable
You should use some index based loop like. range
function is quite useful here.
The updated loop will be:
for i in range(2,7):
print(elements_csvdata[2][i] + ": " + elements_csvdata[3][I])
>>> elements_csvdata = [
... [],
... [],
... ['Team C RTO', '1 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '2 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '3 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '4 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End', '5 Aug 22', 'Start', '1st Break', 'Meal', '2nd Break', 'End'],
... ['1', 'Ayu', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Riana', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Aria', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Aza', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM', 'Ayu', '6:00 AM', '7:15 AM', '9:00 AM', '1:00 PM', '3:00 PM']
... ]
>>> print(elements_csvdata[2][0])
Team C RTO
>>> print(elements_csvdata[2][1])
1 Aug 22
>>> print(elements_csvdata[3][1])
Ayu
>>> for i in range(2,7):
... print(elements_csvdata[2][i] + ": " + elements_csvdata[3][i])
...
Start: 6:00 AM
1st Break: 7:15 AM
Meal: 9:00 AM
2nd Break: 1:00 PM
End: 3:00 PM
>>>
Upvotes: 1