Python Forum
Thread Rating:
  • 3 Vote(s) - 3.33 Average
  • 1
  • 2
  • 3
  • 4
  • 5
for loop the difference
#1
Hey guys,

I was reading python learn-stuff at https://www.programiz.com/python-programming/for-loop
and I was wondering: is the suggested code logical?

# Program to iterate through a list using indexing

genre = ['pop', 'rock', 'jazz']

# iterate over the list using index
for i in range(len(genre)):
	print("I like", genre[i])
If I had to code it: I would (a newbie at python!):
# Program to iterate through a list using indexing

genre = ['pop', 'rock', 'jazz']

# iterate over the list using index
for i in genre:
	print("I like", i)
I don't understand why range+len is needed. Perhaps someone can clearify?
Reply
#2
Your code is definitely better, with the recommendation to use more descriptive names like genres = ... and for genre in genres: instead of i. We even have special thread in Tutorials - Never use "for i in range(len(sequence)):"

I looked at the article in your link - note that it's just an example, i.e. they show the more pythonic way first and they also show what you can do too using index. In other words I would say it's just for educational purposes
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
Ok, thanks for clearifying Buran,

Sometimes I have to check if I understand it all correctly. And since there are often more than one ways of achieving things (and sometimes with surprisingly faster timed versions), I'm curious which is better and/or why things are done this way.

Thanks for your suggestion regarding "genre" vs. "i". Noted!

3Pinter
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  difference between word: and word[:] in for loop zowhair 2 3,620 Mar-03-2018, 07:24 AM
Last Post: zowhair

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020