test for list equality

MRAB python at mrabarnett.plus.com
Thu Dec 15 13:06:01 EST 2011


On 15/12/2011 17:49, noydb wrote:
> On Dec 15, 11:36 am, noydb<jenn.du... at gmail.com>  wrote:
>>  I want to test for equality between two lists.  For example, if I have
>>  two lists that are equal in content but not in order, I want a return
>>  of 'equal' -- dont care if they are not in the same order.  In order
>>  to get that equality, would I have to sort both lists regardless?  if
>>  yes, how (having issues with list.sort)?
>>
>>  Another way i tried, that I think is kind-of roundabout is like
>>  x = [2, 5, 1, 88, 9]
>>  y = [5, 2, 9, 1, 88]
>>  inBoth = list(set(x)&  set(y))
>>
>>  and then test that list.count is equal between inBoth and x and/or y.
>>
>>  Any better suggestions?
>>
>>  Thanks for any help!
>
> My sort issue... as in this doesn't work
>>>>  if x.sort == y.sort:
> ... 	print 'equal'
> ... else:
> ... 	print 'not equal'
> ...
> not equal
>
>
> ???

.sort is a method which sorts the list in-place and returns None. You
must provide the () if you want to call it, otherwise you just get a
reference to the method:

 >>> x
[2, 5, 1, 88, 9]
 >>> x.sort
<built-in method sort of list object at 0x00A58508>
 >>> x.sort()
 >>> x
[1, 2, 5, 9, 88]

There's also a function "sorted" which returns its argument as a sorted
list. The argument itself isn't altered:

 >>> y = [5, 2, 9, 1, 88]
 >>> sorted(y)
[1, 2, 5, 9, 88]
 >>> y
[5, 2, 9, 1, 88]

It's all in the documentation! :-)



More information about the Python-list mailing list