On 16/06/15 20:39, Anubhav Yadav wrote:
I am sorry I didn't posted my code. I had solved this question long back on hackerrank, and I couldn't figure out why this behaviour was seen in this problem, so I had posted this question on their discussion forum. Couldn't get a good answer so I decided to post here. Luckily I found the revision history of my submission there where I could find the earlier code which was giving this error.

Here is the code.

marks = [['Varun', 19.0], ['Kakunami', 19.0], ['Harsh', 20.0], ['Beria', 20.0], ['Vikas', 21.0]]
marks = sorted(marks, key=lambda score:score[1])
lowest = marks[0][1]

for row in marks:
    if row[1] == lowest:
        marks.remove(row)


I already explained why this messes up, don;t mutate the thing
you are iterating over.

second_lowest = marks[0][1]

This doesn't work because the loop didn't work.

sh = []
for row in marks:
    if second_lowest == row[1]:
        sh.append(row)


This could be a comprehension if you wanted

sh = [ row for row in marks if second_lowest == row[1] ]

But you haven't shown where you printed the 'output' that
was wrong, nor have you shown the comprehensions which
'worked'.

As it is you need to fix the first for loop before anything
else can work as you want it to.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to