ayuninotayutu
ayuninotayutu

Reputation: 19

How to use for loop for to iterate through indexed lists?

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

Answers (2)

Rahul K P
Rahul K P

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

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])

Test Case

>>> 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

Related Questions