Creating for loop until list.length
Question:
I’m reading about for loops right now, and I am curious if it’s possible to do a for loop in Python like in Java.
Is it even possible to do something like
for (int i = 1; i < list.length; i++)
and can you do another for loop inside this for loop ?
Thanks
Answers:
You could learn about Python loops here:
http://en.wikibooks.org/wiki/Python_Programming/Loops
You have to know that Python doesn’t have { and } for start and end of loop, instead it depends on tab chars you enter in first of line, I mean line indents.
So you can do loop inside loop with double tab (indent)
An example of double loop is like this:
onetoten = range(1,11)
tentotwenty = range(10,21)
for count in onetoten:
for count2 in tentotwenty
print(count2)
Yes you can, with range
[docs]:
for i in range(1, len(l)):
# i is an integer, you can access the list element with l[i]
but if you are accessing the list elements anyway, it’s more natural to iterate over them directly:
for element in l:
# element refers to the element in the list, i.e. it is the same as l[i]
If you want to skip the the first element, you can slice the list [tutorial]:
for element in l[1:]:
# ...
can you do another for loop inside this for loop
Sure you can.
In Python you can iterate over the list
itself:
for item in my_list:
#do something with item
or to use indices you can use xrange()
:
for i in xrange(1,len(my_list)): #as indexes start at zero so you
#may have to use xrange(len(my_list))
#do something here my_list[i]
There’s another built-in function called enumerate()
, which returns both item and index:
for index,item in enumerate(my_list):
# do something here
examples:
In [117]: my_lis=list('foobar')
In [118]: my_lis
Out[118]: ['f', 'o', 'o', 'b', 'a', 'r']
In [119]: for item in my_lis:
print item
.....:
f
o
o
b
a
r
In [120]: for i in xrange(len(my_lis)):
print my_lis[i]
.....:
f
o
o
b
a
r
In [122]: for index,item in enumerate(my_lis):
print index,'-->',item
.....:
0 --> f
1 --> o
2 --> o
3 --> b
4 --> a
5 --> r
The answer depends on what do you need a loop for.
of course you can have a loop similar to Java:
for i in xrange(len(my_list)):
but I never actually used loops like this,
because usually you want to iterate
for obj in my_list
or if you need an index as well
for index, obj in enumerate(my_list)
or you want to produce another collection from a list
map(some_func, my_list)
[somefunc[x] for x in my_list]
also there are itertools
module that covers most of iteration related cases
also please take a look at the builtins like any
, max
, min
, all
, enumerate
I would say – do not try to write Java-like code in python. There is always a pythonic way to do it.
I’m reading about for loops right now, and I am curious if it’s possible to do a for loop in Python like in Java.
Is it even possible to do something like
for (int i = 1; i < list.length; i++)
and can you do another for loop inside this for loop ?
Thanks
You could learn about Python loops here:
http://en.wikibooks.org/wiki/Python_Programming/Loops
You have to know that Python doesn’t have { and } for start and end of loop, instead it depends on tab chars you enter in first of line, I mean line indents.
So you can do loop inside loop with double tab (indent)
An example of double loop is like this:
onetoten = range(1,11)
tentotwenty = range(10,21)
for count in onetoten:
for count2 in tentotwenty
print(count2)
Yes you can, with range
[docs]:
for i in range(1, len(l)):
# i is an integer, you can access the list element with l[i]
but if you are accessing the list elements anyway, it’s more natural to iterate over them directly:
for element in l:
# element refers to the element in the list, i.e. it is the same as l[i]
If you want to skip the the first element, you can slice the list [tutorial]:
for element in l[1:]:
# ...
can you do another for loop inside this for loop
Sure you can.
In Python you can iterate over the list
itself:
for item in my_list:
#do something with item
or to use indices you can use xrange()
:
for i in xrange(1,len(my_list)): #as indexes start at zero so you
#may have to use xrange(len(my_list))
#do something here my_list[i]
There’s another built-in function called enumerate()
, which returns both item and index:
for index,item in enumerate(my_list):
# do something here
examples:
In [117]: my_lis=list('foobar')
In [118]: my_lis
Out[118]: ['f', 'o', 'o', 'b', 'a', 'r']
In [119]: for item in my_lis:
print item
.....:
f
o
o
b
a
r
In [120]: for i in xrange(len(my_lis)):
print my_lis[i]
.....:
f
o
o
b
a
r
In [122]: for index,item in enumerate(my_lis):
print index,'-->',item
.....:
0 --> f
1 --> o
2 --> o
3 --> b
4 --> a
5 --> r
The answer depends on what do you need a loop for.
of course you can have a loop similar to Java:
for i in xrange(len(my_list)):
but I never actually used loops like this,
because usually you want to iterate
for obj in my_list
or if you need an index as well
for index, obj in enumerate(my_list)
or you want to produce another collection from a list
map(some_func, my_list)
[somefunc[x] for x in my_list]
also there are itertools
module that covers most of iteration related cases
also please take a look at the builtins like any
, max
, min
, all
, enumerate
I would say – do not try to write Java-like code in python. There is always a pythonic way to do it.