Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #49395 > unrolled thread

indexerror: list index out of range??

Started byTitiksha Joshi <joshi.titiksha90@gmail.com>
First post2013-06-28 18:20 -0700
Last post2013-07-01 12:30 +0000
Articles 9 — 8 participants

Back to article view | Back to comp.lang.python


Contents

  indexerror: list index out of range?? Titiksha Joshi <joshi.titiksha90@gmail.com> - 2013-06-28 18:20 -0700
    Re: indexerror: list index out of range?? Chris Angelico <rosuav@gmail.com> - 2013-06-29 11:53 +1000
    Re: indexerror: list index out of range?? Dave Angel <davea@davea.name> - 2013-06-28 21:58 -0400
    Re: indexerror: list index out of range?? Titiksha <joshi.titiksha90@gmail.com> - 2013-06-28 20:35 -0700
      Re: indexerror: list index out of range?? Dave Angel <davea@davea.name> - 2013-06-29 09:44 -0400
      Re: indexerror: list index out of range?? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-06-29 15:30 +0100
      Re: indexerror: list index out of range?? Joshua Landau <joshua.landau.ws@gmail.com> - 2013-06-29 16:52 +0100
      Re: indexerror: list index out of range?? Robert Kern <robert.kern@gmail.com> - 2013-07-01 09:45 +0100
        Re: indexerror: list index out of range?? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-07-01 12:30 +0000

#49395 — indexerror: list index out of range??

FromTitiksha Joshi <joshi.titiksha90@gmail.com>
Date2013-06-28 18:20 -0700
Subjectindexerror: list index out of range??
Message-ID<8b12635e-c3e9-49b2-b3fa-792559088821@googlegroups.com>
Hi,
I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
m=['631138', '601034', '2834', '2908', '64808']

i=0
while i<len(m):
    print(i)
    my_file = open("ALL_BUSES_FINAL.csv", "r+")
    for line in my_file:
        if m[i] in line:
            print (line)
            a.append(line)
            i+=1
            print(a)
    my_file.close()


The output is as follows:
0
LAKEFLD  3227,631138

['LAKEFLD  3227,631138\n']

1
NOBLES   3013,601034

['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n']

2
GR_ISLD  I,2834

['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n']

FTTHOMP  928,2908

['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n']

VICTRYH  15,64808

['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n', 'VICTRYH  15,64808\n']
Traceback (most recent call last):
  File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
    if m[i] in line:
IndexError: list index out of range
>>> 

I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
Thanks in advance.

[toc] | [next] | [standalone]


#49398

FromChris Angelico <rosuav@gmail.com>
Date2013-06-29 11:53 +1000
Message-ID<mailman.3976.1372470834.3114.python-list@python.org>
In reply to#49395
On Sat, Jun 29, 2013 at 11:20 AM, Titiksha Joshi
<joshi.titiksha90@gmail.com> wrote:
> Hi,
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
> m=['631138', '601034', '2834', '2908', '64808']
>
> i=0
> while i<len(m):
>     print(i)
>     my_file = open("ALL_BUSES_FINAL.csv", "r+")
>     for line in my_file:
>         if m[i] in line:
>             print (line)
>             a.append(line)
>             i+=1
>             print(a)
>     my_file.close()

What this does is open the file once for every string in 'm', and read
through it. But you increment i for every line in the file, that's why
you're having problems.

I think you probably want to open the file once and iterate over it,
but you'll need to figure out what you're trying to do before you can
figure out how to do it in Python :)

Also, be up-front about homework assignments. Honesty won't hurt you
(since we can all tell anyway), and it means we know you're trying to
learn, not to cheat. And yes, there are a discouraging number of
people who do try to cheat, so setting yourself apart from them is
well worth it. :)

Chris Angelico

[toc] | [prev] | [next] | [standalone]


#49399

FromDave Angel <davea@davea.name>
Date2013-06-28 21:58 -0400
Message-ID<mailman.3977.1372471106.3114.python-list@python.org>
In reply to#49395
On 06/28/2013 09:20 PM, Titiksha Joshi wrote:
> Hi,
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
> m=['631138', '601034', '2834', '2908', '64808']
>

It's not hard to see what's wrong in the following excerpt, but it is 
hard to guess what you really wanted.

Did you want to find all lines which match any of the strings in m?  Or 
are you just satisfied to match each of the strings in m against *some* 
line of the file?  Or is it something else entirely?

You have a nested loop here (for loop inside a while loop), and you're 
confusing the limit values for the outer one.

> i=0
> while i<len(m):
>      print(i)
>      my_file = open("ALL_BUSES_FINAL.csv", "r+")
>      for line in my_file:
>          if m[i] in line:
>              print (line)
>              a.append(line)
>              i+=1

You increment i here, but do not check if it's reached the end of the m. 
  So eventually it does, and crashes.

>              print(a)
>      my_file.close()
>
>
> The output is as follows:
> 0
> LAKEFLD  3227,631138
>
> ['LAKEFLD  3227,631138\n']
>
> 1
> NOBLES   3013,601034
>
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n']
>
> 2
> GR_ISLD  I,2834
>
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n']
>
> FTTHOMP  928,2908
>
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n']
>
> VICTRYH  15,64808
>
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n', 'VICTRYH  15,64808\n']
> Traceback (most recent call last):
>    File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
>      if m[i] in line:
> IndexError: list index out of range
>>>>
>
> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
> Thanks in advance.
>

Another big problem will arise as soon as you have a string in m which 
is a strict substring of a value in the line.  You'll get false matches. 
  So presumably you really want to use csv logic, and have explicit 
fields that you're searching for, rather than using 'in' operator.  And 
at that point, maybe you just want to check field #2 of each line.


-- 
DaveA

[toc] | [prev] | [next] | [standalone]


#49401

FromTitiksha <joshi.titiksha90@gmail.com>
Date2013-06-28 20:35 -0700
Message-ID<c6642bec-58b1-4db2-bad9-6f85cb3cf5c6@googlegroups.com>
In reply to#49395
On Friday, June 28, 2013 8:20:28 PM UTC-5, Titiksha wrote:
> Hi,
> 
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
> 
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
> 
> m=['631138', '601034', '2834', '2908', '64808']
> 
> 
> 
> i=0
> 
> while i<len(m):
> 
>     print(i)
> 
>     my_file = open("ALL_BUSES_FINAL.csv", "r+")
> 
>     for line in my_file:
> 
>         if m[i] in line:
> 
>             print (line)
> 
>             a.append(line)
> 
>             i+=1
> 
>             print(a)
> 
>     my_file.close()
> 
> 
> 
> 
> 
> The output is as follows:
> 
> 0
> 
> LAKEFLD  3227,631138
> 
> 
> 
> ['LAKEFLD  3227,631138\n']
> 
> 
> 
> 1
> 
> NOBLES   3013,601034
> 
> 
> 
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n']
> 
> 
> 
> 2
> 
> GR_ISLD  I,2834
> 
> 
> 
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n']
> 
> 
> 
> FTTHOMP  928,2908
> 
> 
> 
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n']
> 
> 
> 
> VICTRYH  15,64808
> 
> 
> 
> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n', 'GR_ISLD  I,2834\n', 'FTTHOMP  928,2908\n', 'VICTRYH  15,64808\n']
> 
> Traceback (most recent call last):
> 
>   File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
> 
>     if m[i] in line:
> 
> IndexError: list index out of range
> 
> >>> 
> 
> 
> 
> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
> 
> Thanks in advance.

Thanks for helping out! 
Dave you mentioned about false matches in case of string in m is substring of line. How do I manage that issue? Is there any other method I should look into?

What I am looking to do is..I have a list of m which I need to map in the same sequence to the ALL_BUSES_FINAL file and get the entire line which has the string in m.I want to iterate through all the lines in ALL_BUSES_FINAL to match the all strings in m.



[toc] | [prev] | [next] | [standalone]


#49417

FromDave Angel <davea@davea.name>
Date2013-06-29 09:44 -0400
Message-ID<mailman.3987.1372513508.3114.python-list@python.org>
In reply to#49401
On 06/28/2013 11:35 PM, Titiksha wrote:
> On Friday, June 28, 2013 8:20:28 PM UTC-5, Titiksha wrote:
>>
          <SNIP double-spaced nonsense>
>>
>> m=['631138', '601034', '2834', '2908', '64808']
>>
          <SNIP more double-spaced nonsense>
>>
>>
>>
>> ['LAKEFLD  3227,631138\n', 'NOBLES   3013,601034\n']
>>
>>

Since you're using the arrogant and buggy GoogleGroups, this 
http://wiki.python.org/moin/GoogleGroupsPython.

>>
>>
>> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
>>
>> Thanks in advance.
>
> Thanks for helping out!
> Dave you mentioned about false matches in case of string in m is substring of line. How do I manage that issue? Is there any other method I should look into?

Suppose one of the items in m were '1234', and suppose one of the lines 
in the file be
'HARMONY 12,441234913'

Your current logic would consider it a match, and I'm assuming that 
would be a false match.

To fix that, you need to parse the line from the file, and separate it 
into fields, one of which needs to exactly match 1234.

You call it a csv file, and if it were, you could just use the csv 
module.  But there's no comma between LAKEFLD and 3227, so the line 
would be considered to have two fields.  If that's correct, then you're 
golden.  Just use csv to get the fields, and compare m[i] == field[1] 
rather than  m[i] in line.


>
> What I am looking to do is..I have a list of m which I need to map in the same sequence to the ALL_BUSES_FINAL file and get the entire line which has the string in m.I want to iterate through all the lines in ALL_BUSES_FINAL to match the all strings in m.
>
Any way I can interpret those sentences, it contradicts itself.  Could 
you just post the complete assignment, without paraphrasing?

Taking an individual phrase of what you said:  "same sequence" implies 
you do NOT want to re-open the file multiple times. So move the open 
outside of the while loop.  Add a test and a break after incrementing i, 
since you'll quit looking once you have a match for all the items, and 
you'll know that when i reaches the len of m.

Hopefully you'll know how to get the single line out of a when you're 
done, maybe by concatenating field[0] of each line.


-- 
DaveA

[toc] | [prev] | [next] | [standalone]


#49424

FromMark Lawrence <breamoreboy@yahoo.co.uk>
Date2013-06-29 15:30 +0100
Message-ID<mailman.3992.1372516245.3114.python-list@python.org>
In reply to#49401
On 29/06/2013 14:44, Dave Angel wrote:
> On 06/28/2013 11:35 PM, Titiksha wrote:
>
> Since you're using the arrogant and buggy GoogleGroups, this
> http://wiki.python.org/moin/GoogleGroupsPython.
>

Please don't make comments like this, you'll upset the Python Mailing 
List Police.

-- 
"Steve is going for the pink ball - and for those of you who are 
watching in black and white, the pink is next to the green." Snooker 
commentator 'Whispering' Ted Lowe.

Mark Lawrence

[toc] | [prev] | [next] | [standalone]


#49527

FromJoshua Landau <joshua.landau.ws@gmail.com>
Date2013-06-29 16:52 +0100
Message-ID<mailman.4051.1372664301.3114.python-list@python.org>
In reply to#49401
On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote:
>
> On 29/06/2013 14:44, Dave Angel wrote:
>>
>> Since you're using the arrogant and buggy GoogleGroups, this
>> http://wiki.python.org/moin/GoogleGroupsPython.
>>
> Please don't make comments like this, you'll upset the Python Mailing List
> Police.

*doesn't understand*

[toc] | [prev] | [next] | [standalone]


#49531

FromRobert Kern <robert.kern@gmail.com>
Date2013-07-01 09:45 +0100
Message-ID<mailman.4054.1372668359.3114.python-list@python.org>
In reply to#49401
On 2013-06-29 16:52, Joshua Landau wrote:
> On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote:
>>
>> On 29/06/2013 14:44, Dave Angel wrote:
>>>
>>> Since you're using the arrogant and buggy GoogleGroups, this
>>> http://wiki.python.org/moin/GoogleGroupsPython.
>>>
>> Please don't make comments like this, you'll upset the Python Mailing List
>> Police.
>
> *doesn't understand*

Mark frequently makes similar comments (in content and tone) to people who come 
here using Google Groups. Presumably, he has received criticism for this (mostly 
on tone grounds, I imagine), either on or off list.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco

[toc] | [prev] | [next] | [standalone]


#49554

FromSteven D'Aprano <steve+comp.lang.python@pearwood.info>
Date2013-07-01 12:30 +0000
Message-ID<51d1767a$0$29999$c3e8da3$5496439d@news.astraweb.com>
In reply to#49531
On Mon, 01 Jul 2013 09:45:52 +0100, Robert Kern wrote:

> On 2013-06-29 16:52, Joshua Landau wrote:
>> On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote:
>>>
>>> On 29/06/2013 14:44, Dave Angel wrote:
>>>>
>>>> Since you're using the arrogant and buggy GoogleGroups, this
>>>> http://wiki.python.org/moin/GoogleGroupsPython.
>>>>
>>> Please don't make comments like this, you'll upset the Python Mailing
>>> List Police.
>>
>> *doesn't understand*
> 
> Mark frequently makes similar comments (in content and tone) to people
> who come here using Google Groups. Presumably, he has received criticism
> for this (mostly on tone grounds, I imagine), either on or off list.

That would be me, and it wasn't about Google Groups.

After Mark was repeatedly abusive towards somebody, including telling 
this person to kill themselves, and after he chose to ignore both polite 
requests to cease flaming, and a fair warning that he would be kill-filed 
if he persisted, he persisted and so I kill-filed him. Which is a pity, 
because Mark does know Python well and he can be very helpful (although 
sometimes abrasive). I think on balance, when he's not flaming, he makes 
a positive contribution to this community.

The kill-filing is only temporary, and I look forward to seeing his posts 
again soon. Hopefully by that time, he'll stop feeling put-out and hurt 
that I've chosen to not read his flames, and cease misrepresenting my 
actions.


-- 
Steven

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web