<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    On 4/23/2012 3:55 PM, Raymond Hettinger wrote:
    <blockquote
      cite="mid:647E82A1-48ED-4025-8195-19982D8BC441@gmail.com"
      type="cite"><br>
      <div>
        <div>On Apr 23, 2012, at 9:52 AM, Steven D'Aprano wrote:</div>
        <br class="Apple-interchange-newline">
        <blockquote type="cite"><span class="Apple-style-span"
            style="border-collapse: separate; font-family: Helvetica;
            font-style: normal; font-variant: normal; font-weight:
            normal; letter-spacing: normal; line-height: normal;
            orphans: 2; text-align: -webkit-auto; text-indent: 0px;
            text-transform: none; white-space: normal; widows: 2;
            word-spacing: 0px; -webkit-border-horizontal-spacing: 0px;
            -webkit-border-vertical-spacing: 0px;
            -webkit-text-decorations-in-effect: none;
            -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
            0px; font-size: medium; ">However, the discoverability of
            this solution is essentially zero<span
              class="Apple-converted-space"> </span></span></blockquote>
      </div>
      <br>
      <div>That exact code has been in the documentation for years:</div>
      <div><br>
      </div>
      <div>
        <pre style="overflow-x: auto; overflow-y: hidden; padding: 5px; background-color: rgb(238, 255, 204); color: rgb(51, 51, 51); line-height: 15px; border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid; border-top-color: rgb(170, 204, 153); border-bottom-color: rgb(170, 204, 153); border-left-style: none; border-right-style: none; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="k" style="color: rgb(0, 112, 32); font-weight: bold; ">def</span> <span class="nf" style="color: rgb(6, 40, 126); ">powerset</span><span class="p">(</span><span class="n">iterable</span><span class="p">):</span>
    <span class="s" style="color: rgb(64, 112, 160); ">"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"</span>
    <span class="n">s</span> <span class="o" style="color: rgb(102, 102, 102); ">=</span> <span class="nb" style="color: rgb(0, 112, 32); ">list</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span>
    <span class="k" style="color: rgb(0, 112, 32); font-weight: bold; ">return</span> <span class="n">chain</span><span class="o" style="color: rgb(102, 102, 102); ">.</span><span class="n">from_iterable</span><span class="p">(</span><span class="n">combinations</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="k" style="color: rgb(0, 112, 32); font-weight: bold; ">for</span> <span class="n">r</span> <span class="ow" style="color: rgb(0, 112, 32); font-weight: bold; ">in</span> <span class="nb" style="color: rgb(0, 112, 32); ">range</span><span class="p">(</span><span class="nb" style="color: rgb(0, 112, 32); ">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o" style="color: rgb(102, 102, 102); ">+</span><span class="mi" style="color: rgb(32, 128, 80); ">1</span><span class="p">))</span></pre>
        <div><br>
        </div>
      </div>
      <div>The whole purpose of the itertools recipes are to teach how</div>
      <div>the itertools can be readily combined to build new tools.</div>
      <div><br>
      </div>
      <div><a moz-do-not-send="true"
          href="http://docs.python.org/library/itertools.html#module-itertools">http://docs.python.org/library/itertools.html#module-itertools</a></div>
      <div><br>
      </div>
      <div><br>
      </div>
    </blockquote>
    Raymond's "that code has been in the docs for years," and Steven's
    "the discoverability of this solution is essentially zero" are not
    contradictions.  It sounds like we need a better way to find the
    information in the itertools docs.  For example, there is no index
    entry for "powerset", and I don't know what term Steven tried
    looking it up with.  Sounds like you two could work together to make
    people more aware of the tools we've already got.<br>
    <br>
    --Ned.<br>
    <br>
    <blockquote
      cite="mid:647E82A1-48ED-4025-8195-19982D8BC441@gmail.com"
      type="cite">
      <div>Raymond</div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Python-ideas mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python-ideas@python.org">Python-ideas@python.org</a>
<a class="moz-txt-link-freetext" href="http://mail.python.org/mailman/listinfo/python-ideas">http://mail.python.org/mailman/listinfo/python-ideas</a>
</pre>
    </blockquote>
  </body>
</html>