It is safer to cast the iterable as a list
a_list = [1, 2, 4, 3, 7, 6, 5]
counter = 0
for a_value in a_list:
print("number {} has a value of {}".format(counter, a_value))
counter += 1
number 0 has a value of 1
number 1 has a value of 2
number 2 has a value of 4
number 3 has a value of 3
number 4 has a value of 7
number 5 has a value of 6
number 6 has a value of 5
the way you have it you are passing a list as an iterable, so the whole list is passed.
If you want individual values from those lists then you can enclose them then unpack
for a_value in [*a_list, *a_list]:
print(a_value)
1
2
4
3
7
6
5
1
2
4
3
7
6
5
Or if you need to pair objects, then you can use zip (I think it works in python 2, but it certainly works in python 3.
for a_value in list(zip(a_list, a_list)):
print(a_value)
(1, 1)
(2, 2)
(4, 4)
(3, 3)
(7, 7)
(6, 6)
(5, 5)
In short... make your iterable explicit and don't rely on providing the iterable as you have done