Many thanks. <div><br></div><div>I put all the set result into a list first . Then it will work and work without result displayed. </div><div><div>>>> import nltk</div><div>>>> from nltk.corpus import wordnet as wn</div>
<div>>>> def average_polysemy(pos):</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>synset_list = list(wn.all_synsets(pos))</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>sense_number = 0</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>lemma_list =[]</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>for synset in synset_list:</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>lemma_list.extend(synset.lemma_names)</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span><font color="#ff0000">unqiue_lemma_list = list(set(lemma_list))</font></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for lemma in unique_lemma_list:</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>sense_number_new = len(wn.synsets(lemma, pos))</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>sense_number = sense_number + sense_number_new</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return sense_number/len(unique_lemma_list)</div><div><br></div><div>>>> average_polysemy('n')</div></div><div><br></div><div><font color="#ff0000">However, if I don't put </font>
<span style="color:rgb(255,0,0)">list(set(lemma_list))</span>  to a variable name, it works much faster. Say:</div><div><br></div><div><div>>>> def average_polysemy(pos):</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>synset_list = list(wn.all_synsets(pos))</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>sense_number = 0</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>lemma_list = []</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>for synset in synset_list:</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>lemma_list.extend(synset.lemma_names)<span class="Apple-tab-span" style="white-space:pre">               </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span><font color="#ff0000">for lemma in list(set(lemma_list))</font>:</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>sense_number_new = len(wn.synsets(lemma, pos))</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>sense_number = sense_number + sense_number_new</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return sense_number/len(set(lemma_list))</div><div><br></div><div>>>> average_polysemy('n')</div><div>1</div></div><div><br>Do you know why there is such a big difference? Does that mean set() will work slower if its value is given to a variable name?</div>
<div><br></div><div><br><div class="gmail_quote">On Sun, Sep 9, 2012 at 1:59 PM, Donald Stufft <span dir="ltr"><<a href="mailto:donald.stufft@gmail.com" target="_blank">donald.stufft@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div>
                    seen = set()
                </div><div>uniqued = []</div><div>for x in original:</div><div>    if not x in seen:</div><div>        seen.add(x)</div><div>        uniqued.append(x)</div><div><br></div><div>or</div><div><br></div><div>
uniqued = []</div><div>for x in oriignal:</div><div>    if not x in uniqued:</div><div>        uniqued.append(x)</div><div><br></div><div>The difference between is option #1 is more efficient speed wise, but uses more memory (extraneous set hanging around), whereas the second is slower (``in`` is slower in lists than in sets) but uses less memory.</div>
<div class="HOEnZb"><div class="h5">
                <div></div>
                 
                <p style="color:#a0a0a8">On Sunday, September 9, 2012 at 1:56 AM, John H. Li wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px">
                    <span><div><div>Many thanks. If I want keep the order, how can I deal with it?<div>or we can list(set([1, 1, 2, 3, 4])) = [1,2,3,4]<br><div><br><br><div>On Sun, Sep 9, 2012 at 1:47 PM, Donald Stufft <span dir="ltr"><<a href="mailto:donald.stufft@gmail.com" target="_blank">donald.stufft@gmail.com</a>></span> wrote:<br>
<blockquote type="cite"><div>
                <div>
                    If you don't need to retain order you can just use a set, </div><div><br></div><div>set([1, 1, 2, 3, 4]) = set([1, 2, 3, 4])</div><div><br></div><div>But set's don't retain order.</div>
                 
                  
                <p style="color:#a0a0a8">On Sunday, September 9, 2012 at 1:43 AM, Token Type wrote:</p><blockquote type="cite"><div>
                    <span><div><div><div>Is there a unique method in python to unique a list? thanks</div><span><font color="#888888"><div>-- </div><div><a href="http://mail.python.org/mailman/listinfo/python-list" target="_blank">http://mail.python.org/mailman/listinfo/python-list</a></div>

</font></span></div></div></span>
                  
                  
                  
                  
                </div></blockquote><div>
                    <br>
                </div>
            </div></blockquote></div><br></div></div>
</div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>
            </div></div></blockquote></div><br></div>