[issue14542] reverse() doesn't reverse sort correctly
New submission from Bill Jefferson : reverse() doesn't reverse sort correctly in Python 25 and 27. sort() works correctly, but reverse doesn't. The following uses reverse(). Incorrect. Even though the date comes first, reverse() sorts on the file name, "B57IBMCD_T.zip" 2012-04-05 B57IBMCD_T7.2.3.1.zip 2012-03-23 B57IBMCD_T7.2.2.3.zip 2012-02-22 B57IBMCD_T7.2.2.2.zip 2012-02-13 B57IBMCD_T7.2.2.1.zip 2012-01-23 B57IBMCD_T7.2.1.1.zip 2012-03-28 B57IBMCD_T7.0.4.6.zip 2012-03-08 B57IBMCD_T7.0.4.5.zip 2012-03-03 B57IBMCD_T7.0.4.4.zip 2012-02-29 B57IBMCD_T7.0.4.3.zip 2012-01-06 B57IBMCD_T7.0.4.2.zip 2011-12-08 B57IBMCD_T7.0.4.1.zip 2012-01-06 B57IBMCD_T7.0.3.1.zip 2012-01-06 B57IBMCD_T7.0.2.2.zip 2012-01-06 B57IBMCD_T7.0.2.1.zip 2012-01-06 B57IBMCD_T6.2.4.9.zip 2011-12-07 B57IBMCD_T6.2.4.9-r1.zip 2011-09-13 B57IBMCD_T6.2.4.8.zip 2012-03-28 B57IBMCD_T6.2.4.12.zip 2012-02-15 B57IBMCD_T6.2.4.11.zip 2011-12-06 B57IBMCD_T6.2.4.10.zip -- components: Demos and Tools, IDLE, Windows files: EX38.PY messages: 157988 nosy: billje priority: normal severity: normal status: open title: reverse() doesn't reverse sort correctly type: performance versions: Python 2.7 Added file: http://bugs.python.org/file25172/EX38.PY ___ Python tracker <http://bugs.python.org/issue14542> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue14542] reverse() doesn't reverse sort correctly
Bill Jefferson added the comment: Eric. Thanks for answering, but I don't understand the difference between "reversing a list" and "reversing it's current values". If I have a list containing elements: A, B, C, D and reverse the list's current values, I get: D, C, B, A, which is the same as reversing the list. Please explain in more detail. Perhaps you can recommend good reference material. Since sort() sorts a list ascending (and works correctly), shouldn't reverse() sort the list descending? Am I using the wrong function? I have attached my program: Bill. #EX38.PY Get listing of all files in a directory #http://stackoverflow.com/questions/237079/how-to-get-file-creation-modification-date-times-in-python # Answer 37 import os, datetime topDir = "C:/BrcmCDs" dateFirst = True # put dates before file names # DateFirst = False # put file names before dates def modDate(fileN): # returns a 10-place date string t = os.path.getmtime(directory+"/"+fileN) return str(datetime.datetime.fromtimestamp(t))[0:10] for directory, dirnames, filenames in os.walk(topDir): outList = [] print "Directory: ", directory print for fileA in filenames: if (fileA[0:10] == "B57IBMCD_T" and fileA[-4:] == ".zip"): dateString = modDate(fileA) if dateFirst: fileString = dateString + " " + fileA else: fileString = fileA + " " + dateString outList.append(fileString) outList.sort() # sort the file list, ascending # outList.reverse() # reverse the file list, desending print outList #show all files # now save list to a file: # https://bbs.archlinux.org/viewtopic.php?id=75839 f = open("fileList.TXT", "w") f.write("\n".join(map(lambda x: str(x), outList))) f.close() Regards from: William Jefferson Photography 514 Daniels St., #211 Raleigh, NC 27605 Cell Phone: (919) 931-6681 EMail: shagge...@yahoo.com Brides & Weddings: http://www.WilliamJeffersonPhotography.com Special Events: http://www.DancingLight.org From: Eric V. Smith To: shagge...@yahoo.com Sent: Tuesday, April 10, 2012 5:45 PM Subject: [issue14542] reverse() doesn't reverse sort correctly Eric V. Smith added the comment: list.reverse() does not reverse a list, it reverses its current values. Help on built-in function reverse: reverse(...) L.reverse() -- reverse *IN PLACE* >>> -- nosy: +eric.smith resolution: -> invalid stage: -> committed/rejected status: open -> closed ___ Python tracker <http://bugs.python.org/issue14542> ___ -- ___ Python tracker <http://bugs.python.org/issue14542> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue14542] reverse() doesn't reverse sort correctly
Bill Jefferson added the comment: Mark and Eric.. Wonderful! I got it now. I used x.sort(reverse=True) and x.sort(reverse=False) and it works just fine. Thanks for your help. Bill.. Regards from: William Jefferson Photography 514 Daniels St., #211 Raleigh, NC 27605 Cell Phone: (919) 931-6681 EMail: shagge...@yahoo.com Brides & Weddings: http://www.WilliamJeffersonPhotography.com Special Events: http://www.DancingLight.org From: Mark Dickinson To: shagge...@yahoo.com Sent: Wednesday, April 11, 2012 8:28 AM Subject: [issue14542] reverse() doesn't reverse sort correctly Mark Dickinson added the comment: Bill, list.reverse doesn't do any *sorting* at all; it merely *reverses* the list contents. [2, 4, 3, 1] If you want to do a reverse sort, you can either first sort normally and then reverse the result, or (easier) use the 'reverse' keyword argument to the list.sort method, as follows: [4, 3, 2, 1] I suspect Eric meant to write "does not reverse sort" instead of "does not reverse". -- nosy: +mark.dickinson ___ Python tracker <http://bugs.python.org/issue14542> ___ -- ___ Python tracker <http://bugs.python.org/issue14542> ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com