Is there a unique method in python to unique a list?

Token Type typetoken at gmail.com
Sun Sep 9 02:44:59 EDT 2012


 
> Try backdenting that statement. You're currently doing it at every
> 
> iteration of the loop - that's why it's so much slower.

Thanks. I works now.

>>> def average_polysemy(pos):
	synset_list = list(wn.all_synsets(pos))
	sense_number = 0
	lemma_list = []
	for synset in synset_list:
		lemma_list.extend(synset.lemma_names)		
	for lemma in list(set(lemma_list)):
		sense_number_new = len(wn.synsets(lemma, pos))
		sense_number = sense_number + sense_number_new
	return sense_number/len(set(lemma_list))

>>> average_polysemy('n')
1

 
> But you'll probably find it better to work with the set directly,
> 
> instead of uniquifying a list as a separate operation.

Yes, the following second methods still runs faster if I don't give a separate variable name to list(set(lemma_list)). Why will this happen?

>>> def average_polysemy(pos):
	synset_list = list(wn.all_synsets(pos))
	sense_number = 0
	lemma_list = []
	for synset in synset_list:
		lemma_list.extend(synset.lemma_names)		
	for lemma in list(set(lemma_list)):
		sense_number_new = len(wn.synsets(lemma, pos))
		sense_number = sense_number + sense_number_new
	return sense_number/len(set(lemma_list))

>>> average_polysemy('n')
1



More information about the Python-list mailing list