(You omitted a title, so I made one up.  Hope it's okay)

Chris Castillo wrote:
# Module demonstrates use of lists and set theory principles

def Unite(set1, set2):          # evaluate 2 lists, join both into 1 new list
        newList = []
        for item in set1:
                newList.append(item)
        for item in set2:
                newList.append(item)
        newList.sort()
        return newList

def Intersect(set1, set2):              # evaluate 2 lists, check for
commonalities, output commonalities to 1 new list
        newList = []
        for item in set1:
                if item in set1 and item in set2:
                        newList.append(item)
        newList.sort()
        return newList

def Negate(set1, set2):         # evaluate 2 lists, return negation of 1st list
        newList = []
        for item in set1:
                if item in set2:
                        set1.remove(item)
        newList = set1
        return newList


could this be done in a more elegant fashion?

Note: don't ever use tabs in source code. Use spaces to indent - preferably 4 each. If you accidentally mix spaces and tabs, you could have very mysterious bugs

Just by inspection - untested code:

#Use docstring. Use extend rather than append in loop. Use slice notation to make a copy of the items in the list

def Unite(set1, set2):
   """  evaluate 2 lists, join both into 1 new list"""
   newList = set1[:]
   newList.extend(set2)
   return sorted(newList)

def Intersect(set1, set2):
   """ evaluate 2 lists, check for
commonalities, output commonalities to 1 new list"""
   newList = []
   for item in set1:
       if item in set2:
           newList.append(item)
   return sorted(newList)

#This one was buggy;  it modified set1 in place, and returned another reference 
to it
def Negate(set1, set2):
   """ evaluate 2 lists, items that are in first list, but not in second """
   newList = set1[:]
   for item in set2:
       newList.remove(item)
   return newList         #Question:  did you mean to sort this one too?

Now, could these be improved further?  Absolutely.  Using list comprehensions 
or similar techniques, some of these loops could be one-liners.
But I'm guessing you're a beginner in Python, and it's more important that you 
get used to writing readable, robust code than clever code.

One thing I do recommend, even at this stage, is to study set().

DaveA


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to