On Sun, Apr 19, 2009 at 2:48 PM, Gregor Lingl <span dir="ltr">&lt;<a href="mailto:gregor.lingl@aon.at">gregor.lingl@aon.at</a>&gt;</span> wrote:<br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">
&gt;How do you explain the nature of range to beginners? <br></blockquote>
<br>How about using list(range())?  Something like:<br><br>&gt;&gt;&gt; # Here&#39;s how you can create a list of integers:<br>&gt;&gt;&gt; list(range(10))<br>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<br>&gt;&gt;&gt; list(range(1, 10))<br>
[1, 2, 3, 4, 5, 6, 7, 8, 9]<br>&gt;&gt;&gt; list(range(1, 10, 2))<br>[1, 3, 5, 7, 9]<br>&gt;&gt;&gt; list(range(-10, 10, 2))<br>[-10, -8, -6, -4, -2, 0, 2, 4, 6, 8]<br><br>&gt;&gt;&gt; # &#39;list&#39; creates a list, and &#39;range&#39; specifies its starting point, ending point, and interval between points.<br>
&gt;&gt;&gt; # a range object produces these values when called upon to do so.<br>&gt;&gt;&gt; # for example, in a loop:<br>&gt;&gt;&gt; for x in range(10): (x, x**2)<br><br>(0, 0)<br>(1, 1)<br>(2, 4)<br>(3, 9)<br>(4, 16)<br>
(5, 25)<br>(6, 36)<br>(7, 49)<br>(8, 64)<br>(9, 81)<br><br>Now, interesting, here I&#39;ve stumbled on a question that I need some clarification on:<br><br>&gt;&gt;&gt; a = range(10)<br>&gt;&gt;&gt; type(a)<br>&lt;class &#39;range&#39;&gt;<br>
&gt;&gt;&gt; next(a)<br>Traceback (most recent call last):<br>  File &quot;&lt;pyshell#49&gt;&quot;, line 1, in &lt;module&gt;<br>    next(a)<br>TypeError: range object is not an iterator<br><br>&gt;&gt;&gt; help(range)<br>
Help on class range in module builtins:<br><br>class range(object)<br> |  range([start,] stop[, step]) -&gt; range object<br> |  <br> |  Returns an iterator that generates the numbers in the range on demand.<br><br>So is range an iterator?<br>
<br>- Michel<br><br>