📄 node5.html
字号:
<dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> a<br>['spam', 'eggs', 100, 1234]<br>>>> a[2] = a[2] + 23<br>>>> a<br>['spam', 'eggs', 123, 1234]<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">你也可以设定一个值或是一个list给一个list的切割部分(slice),但是这样的结果会改变整个list的长度: </tt></p> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> # Replace some items:<br>... a[0:2] = [1, 12]<br>>>> a<br>[1, 12, 123, 1234]<br>>>> # Remove some:<br>... a[0:2] = []<br>>>> a<br>[123, 1234]<br>>>> # Insert some:<br>... a[1:1] = ['bletch', 'xyzzy']<br>>>> a<br>[123, 'bletch', 'xyzzy', 1234]<br>>>> a[:0] = a # Insert (a copy of) itself at the beginning<br>>>> a<br>[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">内建的 <tt class="function">len()</tt> 函式仍然可用在list上面: </tt></p> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> len(a)<br>8<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">一个list也可以是另一个list的成员(这叫作巢状list,nested list),参考下例: </tt></p> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> q = [2, 3]<br>>>> p = [1, q, 4]<br>>>> len(p)<br>3<br>>>> p[1]<br>[2, 3]<br>>>> p[1][0]<br>2<br>>>> p[1].append('xtra') # See section 5.1<br>>>> p<br>[1, [2, 3, 'xtra'], 4]<br>>>> q<br>[2, 3, 'xtra']<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">注意前一个例子, <code>p[1]</code> 以及 <code>q</code> 事实上指得是同一个物件。我们在之后还会再讨论物件的语法( <i>object semantics</i>)。 </tt></p> <p> </p> <h1> <tt class="samp" string[subscprt:subscprt]</tt=""><br> 3.2 迈向程式设计的第一步 </tt></h1> <p> <tt class="samp" string[subscprt:subscprt]</tt="">当然Python能做比二加二更有用更复杂的事,例如说,我们可以写一个程式来印出费氏数列( <i>the Fibonacci series</i> )来: </tt></p> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> # Fibonacci series:<br>... # the sum of two elements defines the next<br>... a, b = 0, 1<br>>>> while b < 10:<br>... print b<br>... a, b = b, a+b<br>... <br>1<br>1<br>2<br>3<br>5<br>8<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">这个范例告诉了我们很多新的事情: </tt></p> <p> </p> <ul> <li><tt class="samp" string[subscprt:subscprt]</tt="">程式的第一行是一个多重设定( <i>multiple assignment</i> ):两个变数 <code>a</code> 以及 <code>b</code> 同时都设定了新的值0 与 1。 程式的最后一行再次使用这个技巧,这次在设定符号(等号)的右边我们使用了expression,所有在右边的expression会先求得其值(evaluate)然后才进行设定(assign)的动作。对于在右边的expression来说,其evaluate的次序则是由左至右的。 </tt> <p> </p> </li> <li><tt class="samp" string[subscprt:subscprt]</tt="">在 <tt class="keyword">while</tt> 回圈中,只要条件符合(在这里是 <code>b < 10</code>), 这个while 回圈就会一直执行。与C相同的是,对Python而言只要是非零的整数都代表在决定true/false的情况下都代表true,0则代表false。我们也可以在回圈的条件的地方放入字串或是一个list,只要这个字串或list的长度不是零就代表true,若是空字串或空的list就代表false。在这个例子里,我们比较两个值的大小。比较的运算元与C是完全相同的: <code><</code> (小于), <code>></code> (大于), <code>==</code> (等于), <code><=</code> (小于或等于), <code>>=</code> (大于或等于) 以及 <code>!=</code> (不等于)。 </tt> <p> </p> </li> <li><tt class="samp" string[subscprt:subscprt]</tt="">在回圈中的执行部分是 <i>缩排</i> 的:缩排在Python中是表示一群叙述的方法(way of grouping statements)。Python没有(还没有)提供够聪明的行排版机制,所以每个要缩排的行你都得打入空白键或是tab键来缩排。实际的工作环境中,你也许会有自己的文字编辑器,大部分的编辑器会自动帮你做缩排的工作。当在互动模式下输入一个复合的statement时(一个由许多statements组合成的statement),最后你需要再打入一个空白行(译:按ENTER键)来告诉直译器这个statement已经完成了(直译器没办法猜你什么时候完成这个statement)。值得注意的是,如果你的statement是属于同一群(block)的话,你缩排的距离就要是一样的。 </tt> <p> </p> </li> <li><tt class="samp" string[subscprt:subscprt]</tt=""><tt class="keyword">print</tt> 这个叙述会印出一个expression的结果值,这点与我们之前所做的仅仅打入expression是不同的。不同之处在于对字串及多个的expression来说,用 <tt class="keyword">print</tt> 不会印出字串的引号,也会在多个expression之间印出空白来,这样会让结果好看一点。如下所示: </tt> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> i = 256*256<br>>>> print 'The value of i is', i<br>The value of i is 65536<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">如果不想每次的输出都换行的话可以在 <tt class="keyword">print</tt> 叙述之后加上逗号,如下所示: </tt></p> <p> </p> <dl> <dd><pre class="verbatim"><tt class="samp" string[subscprt:subscprt]</tt="">>>> a, b = 0, 1<br>>>> while b < 1000:<br>... print b,<br>... a, b = b, a+b<br>... <br>1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987<br></tt></pre> </dd> </dl> <p> <tt class="samp" string[subscprt:subscprt]</tt="">值得注意的是如果最后一行还没有完成的话,直译器会在印出prompt之前印出新的一行。 </tt></p> <p> </p> </li> </ul> <p> </p> <div class="navigation"> <table align="Center" width="100%" cellpadding="0" cellspacing="2"> <tbody> <tr> <td><a href="node4.html"><img src="../icons/previous.gif" border="0" height="32" alt="Previous Page" width="32"></a></td> <td><a href="tut.html"><img src="../icons/up.gif" border="0" height="32" alt="Up One Level" width="32"></a></td> <td><a href="node6.html"><img src="../icons/next.gif" border="0" height="32" alt="Next Page" width="32"></a></td> <td align="Center" width="100%">Python 教学文件</td> <td><a href="node2.html"><img src="../icons/contents.gif" border="0" height="32" alt="Contents" width="32"></a></td> <td><img src="../icons/blank.gif" border="0" height="32" alt="" width="32"></td> <td><img src="../icons/blank.gif" border="0" height="32" alt="" width="32"></td> </tr> </tbody> </table> <tt class="samp" string[subscprt:subscprt]</tt=""><b class="navlabel">Previous:</b> <a class="sectref" href="node4.html">2. 使用Python的直译器 </a> <b class="navlabel">Up:</b> <a class="sectref" href="tut.html">Python 教学文件</a> <b class="navlabel">Next:</b> <a class="sectref" href="node6.html">4. 更多流程控制的工具 </a> <br> </tt> <hr></div> <!--End of Navigation Panel--> <address> </address> <hr>请看<tt class="samp" string[subscprt:subscprt]</tt=""><i><a href="about.html">关于此文件…</a></i> 里面有关如何给我们建议的说明。 </tt> </body> </html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -