<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>解释器 on On My Way</title>
    <link>https://tuanzi-wow.cn/tags/%E8%A7%A3%E9%87%8A%E5%99%A8/</link>
    <description>Recent content in 解释器 on On My Way</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sat, 05 Sep 2026 10:55:03 +0800</lastBuildDate>
    <atom:link href="https://tuanzi-wow.cn/tags/%E8%A7%A3%E9%87%8A%E5%99%A8/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>DAY1 · Python 交互模式随手记</title>
      <link>https://tuanzi-wow.cn/python/python-day1/</link>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0800</pubDate>
      <guid>https://tuanzi-wow.cn/python/python-day1/</guid>
      <description>Python 解释器交互模式下的第一天随手记：命令行参数、常用内建用法与踩到的语法坑。</description>
      <content:encoded><![CDATA[<h2 id="what-is-shown-here-is-what-idk-before">What is shown here is what idk before!</h2>
<h3 id="此处的应用场景是python解释器的交互模式之下">此处的应用场景是python解释器的交互模式之下:</h3>
<p>Do not laugh at me ! I&rsquo;m REALLY a newbie!!!!</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">python</span> <span class="o">-</span><span class="n">c</span> <span class="n">command</span> <span class="n">arg</span>
</span></span><span class="line"><span class="cl"><span class="n">python</span> <span class="o">-</span><span class="n">m</span> <span class="n">module</span> <span class="n">arg</span>
</span></span><span class="line"><span class="cl"><span class="o">//</span><span class="n">创建新New</span><span class="err">—</span><span class="n">Item</span> <span class="n">name</span><span class="err">（</span><span class="n">真实的名称</span><span class="err">）</span> <span class="n">ItemType</span> <span class="nb">type</span><span class="err">（</span><span class="n">具体的类型</span><span class="err">）</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>忘掉了的</p>
<h4 id="数字">数字</h4>
<p>除法运算 (<code>/</code>) 总是返回浮点数。<strong>如果要做 <a href="https://docs.python.org/zh-cn/3/glossary.html#term-floor-division">floor division</a> 得到一个整数结果你可以使用 <code>//</code> 运算符；</strong></p>
<p>Something New：
Python 用 <code>**</code> 运算符计算乘方 [<a href="https://docs.python.org/zh-cn/3/tutorial/introduction.html#id3">1]</a>：
交互模式下，上次输出的表达式会赋给变量 <code>_</code>。把 Python 当作计算器时，用该变量实现下一步计算更简单，例如：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">tax = 12.5 / 100
</span></span><span class="line"><span class="cl">price = 100.50
</span></span><span class="line"><span class="cl">price * tax
</span></span><span class="line"><span class="cl">12.5625
</span></span><span class="line"><span class="cl">price + _
</span></span><span class="line"><span class="cl">113.0625
</span></span><span class="line"><span class="cl">round(_, 2)
</span></span><span class="line"><span class="cl">113.06
</span></span></code></pre></td></tr></table>
</div>
</div><p>除了 <a href="https://docs.python.org/zh-cn/3/library/functions.html#int"><code>int</code></a> 和 <a href="https://docs.python.org/zh-cn/3/library/functions.html#float"><code>float</code></a>，Python 还支持其他数字类型，例如 <a href="https://docs.python.org/zh-cn/3/library/decimal.html#decimal.Decimal"><code>Decimal</code></a> 或 <a href="https://docs.python.org/zh-cn/3/library/fractions.html#fractions.Fraction"><code>Fraction</code></a>。 Python 还内置支持 <a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#typesnumeric">复数</a>，后缀 <code>j</code> 或 <code>J</code> 用于表示虚数 (例如 <code>3+5j</code>)。(wow 复数，之前没有了解过这个表达形式)</p>
<h4 id="文本有str类型表示">文本：有str类型表示</h4>
<p>‘’ 和 ‘’  “无差别
要标示引号本身，我们需要对它进行“转义”，<strong>即在前面加一个 <code>\</code></strong>。或者，我们也可以使用不同类型的引号:
如果要在str使用‘ ，我们可以整体上使用“  ”反之亦然；不过统一的\貌似是一个更好的选择如果不希望前置 <code>\</code> 的字符转义成特殊字符，可以使用 <em>原始字符串</em>，在引号前添加 <code>r</code> 即可：</p>
<p>Copy</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;C:</span><span class="se">\t</span><span class="s1">his</span><span class="se">\n</span><span class="s1">ame&#39;</span><span class="p">)</span>  <span class="c1"># 这里 \t 表示制表符，\n 表示换行符</span>
</span></span><span class="line"><span class="cl"><span class="n">C</span><span class="p">:</span>      <span class="n">his</span>
</span></span><span class="line"><span class="cl"><span class="n">ame</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">&#39;C:\this\name&#39;</span><span class="p">)</span>  <span class="c1"># 请注意引号前的 r</span>
</span></span><span class="line"><span class="cl"><span class="n">C</span><span class="p">:</span>\<span class="n">this</span>\<span class="n">name</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>原始字符串还有一个微妙的限制：一个原始字符串不能以奇数个 <code>\</code> 字符结束；请参阅 <a href="https://docs.python.org/zh-cn/3/faq/programming.html#faq-programming-raw-string-backslash">此 FAQ 条目</a> 了解更多信息及绕过的办法。字符串字面值可以跨越多行。 一种做法是使用三重引号: <code>&quot;&quot;&quot;...&quot;&quot;&quot;</code> 或 <code>'''...'''</code>。 行结束符会自动包括在字符串中，但可以通过在行尾添加 <code>\</code> 来避免此行为。在下面的例子中，开头的换行符将不会被包括:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;&#34;&#34;</span><span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="s2">Usage: thingy [OPTIONS]
</span></span></span><span class="line"><span class="cl"><span class="s2">     -h                        Display this usage message
</span></span></span><span class="line"><span class="cl"><span class="s2">     -H hostname               Hostname to connect to
</span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">Usage</span><span class="p">:</span> <span class="n">thingy</span> <span class="p">[</span><span class="n">OPTIONS</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">     <span class="o">-</span><span class="n">h</span>                        <span class="n">Display</span> <span class="n">this</span> <span class="n">usage</span> <span class="n">message</span>
</span></span><span class="line"><span class="cl">     <span class="o">-</span><span class="n">H</span> <span class="n">hostname</span>               <span class="n">Hostname</span> <span class="n">to</span> <span class="n">connect</span> <span class="n">to</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>字符串字面值的自动拼接</p>
<p>相邻的两个或多个 <em>字符串字面值</em> （引号标注的字符）会自动合并：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&#39;Py&#39; &#39;thon&#39;
</span></span><span class="line"><span class="cl">&#39;Python&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>拼接分隔开的长字符串时，这个功能特别实用：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">text = (&#39;Put several strings within parentheses &#39;
</span></span><span class="line"><span class="cl">        &#39;to have them joined together.&#39;)
</span></span><span class="line"><span class="cl">text
</span></span><span class="line"><span class="cl">&#39;Put several strings within parentheses to have them joined together.&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>这项功能只能用于两个字面值，不能用于变量或表达式，合并变量&amp;表达式要使用+：</p>
<p>Copy</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">prefix = &#39;Py&#39;
</span></span><span class="line"><span class="cl">prefix &#39;thon&#39;  # 不能拼接变量和字符串字面值
</span></span><span class="line"><span class="cl">  File &#34;&lt;stdin&gt;&#34;, line 1
</span></span><span class="line"><span class="cl">    prefix &#39;thon&#39;
</span></span><span class="line"><span class="cl">           ^^^^^^
</span></span><span class="line"><span class="cl">SyntaxError: invalid syntax
</span></span><span class="line"><span class="cl">(&#39;un&#39; * 3) &#39;ium&#39;
</span></span><span class="line"><span class="cl">  File &#34;&lt;stdin&gt;&#34;, line 1
</span></span><span class="line"><span class="cl">    (&#39;un&#39; * 3) &#39;ium&#39;
</span></span><span class="line"><span class="cl">               ^^^^^
</span></span><span class="line"><span class="cl">SyntaxError: invalid syntax
</span></span></code></pre></td></tr></table>
</div>
</div><p>字符串的索引居然能够支持负数，从右边开始计数字符串支持 <em>索引</em> （下标访问），第一个字符的索引是 0。单字符没有专用的类型，就是长度为一的字符串：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">word = &#39;Python&#39;
</span></span><span class="line"><span class="cl">word[0]  # 0 号位的字符
</span></span><span class="line"><span class="cl">&#39;P&#39;
</span></span><span class="line"><span class="cl">word[5]  # 5 号位的字符
</span></span><span class="line"><span class="cl">&#39;n&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>索引还支持负数，用负数索引时，从右边开始计数：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">word[-1]  # 最后一个字符
</span></span><span class="line"><span class="cl">&#39;n&#39;
</span></span><span class="line"><span class="cl">word[-2]  # 倒数第二个字符
</span></span><span class="line"><span class="cl">&#39;o&#39;
</span></span><span class="line"><span class="cl">word[-6]
</span></span><span class="line"><span class="cl">&#39;P&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>字符串的切：用于获取子字符串（substr来了说是）</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">word[0:2]  # 从 0 号位 (含) 到 2 号位 (不含) 的字符
</span></span><span class="line"><span class="cl">&#39;Py&#39;
</span></span><span class="line"><span class="cl">word[2:5]  # 从 2 号位 (含) 到 5 号位 (不含) 的字符
</span></span><span class="line"><span class="cl">&#39;tho&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>切片索引的默认值：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">word[:2]   # 从开头到 2 号位 (不含) 的字符
</span></span><span class="line"><span class="cl">&#39;Py&#39;
</span></span><span class="line"><span class="cl">word[4:]   # 从 4 号位 (含) 到末尾
</span></span><span class="line"><span class="cl">&#39;on&#39;
</span></span><span class="line"><span class="cl">word[-2:]  # 从倒数第二个 (含) 到末尾
</span></span><span class="line"><span class="cl">&#39;on&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>注意，<strong>输出结果包含切片开始，但不包含切片结束</strong>。因此，<code>s[:i] + s[i:]</code> 总是等于 <code>s</code>：
都是如果结束索引是默认值，那么实际上还有一个终结符，我们可以理解为不包含这个终结符但是包含最后一位
可以换一个方式理解：切片是索引之间
直接通过索引访问单个位置可能会出现索引越界，但是切片会自动处理索引越界
Python的字符串不可修改，是immutable的（怎么和JAVA一样啊，恼！！！）
字符串长度获取：内置函数：len();
我CHOVY，ntm讲字符串给我讲好了啊！！！
下面是字符串的一些方法！！！
自己去这里找
<a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#textseq">https://docs.python.org/zh-cn/3/library/stdtypes.html#textseq</a></p>
<h4 id="列表mutable">列表：mutable</h4>
<p>支持索引，切片，合并
append（）；len（）：为切片赋值可以改变列表大小，甚至清空整个列表：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">letters = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;]
</span></span><span class="line"><span class="cl">letters
</span></span><span class="line"><span class="cl">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;]
</span></span><span class="line"><span class="cl"># 替换一些值
</span></span><span class="line"><span class="cl">letters[2:5] = [&#39;C&#39;, &#39;D&#39;, &#39;E&#39;]
</span></span><span class="line"><span class="cl">letters
</span></span><span class="line"><span class="cl">[&#39;a&#39;, &#39;b&#39;, &#39;C&#39;, &#39;D&#39;, &#39;E&#39;, &#39;f&#39;, &#39;g&#39;]
</span></span><span class="line"><span class="cl"># 现在移除它们
</span></span><span class="line"><span class="cl">letters[2:5] = []
</span></span><span class="line"><span class="cl">letters
</span></span><span class="line"><span class="cl">[&#39;a&#39;, &#39;b&#39;, &#39;f&#39;, &#39;g&#39;]
</span></span><span class="line"><span class="cl"># 通过用一个空列表替代所有元素来清空列表
</span></span><span class="line"><span class="cl">letters[:] = []
</span></span><span class="line"><span class="cl">letters
</span></span><span class="line"><span class="cl">[]
</span></span></code></pre></td></tr></table>
</div>
</div><p>嵌套列表（注意不是合并哦哦哦哦哦！！！！！！）</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">a = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
</span></span><span class="line"><span class="cl">n = [1, 2, 3]
</span></span><span class="line"><span class="cl">x = [a, n]
</span></span><span class="line"><span class="cl">x
</span></span><span class="line"><span class="cl">[[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;], [1, 2, 3]]
</span></span><span class="line"><span class="cl">x[0]
</span></span><span class="line"><span class="cl">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
</span></span><span class="line"><span class="cl">x[0][1]
</span></span><span class="line"><span class="cl">&#39;b&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>
<p>关键字参数 <em>end</em> 可以取消输出后面的换行, 或用另一个字符串结尾：</p>
<p>Copy</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">a, b = 0, 1
</span></span><span class="line"><span class="cl">while a &lt; 1000:
</span></span><span class="line"><span class="cl">    print(a, end=&#39;,&#39;)
</span></span><span class="line"><span class="cl">    a, b = b, a+b
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
</span></span></code></pre></td></tr></table>
</div>
</div></li>
</ul>
<p><code>**</code> 比 <code>-</code> 的优先级更高, 所以 <code>-3**2</code> 会被解释成 <code>-(3**2)</code> ，因此，结果是 <code>-9</code>。要避免这个问题，并且得到 <code>9</code>, 可以用 <code>(-3)**2</code>。</p>
<p>[<a href="https://docs.python.org/zh-cn/3/tutorial/introduction.html#id2">2</a>]</p>
<p>与其他语言不同，特殊字符如 <code>\n</code> 在单引号 (<code>'...'</code>) 和双引号 (<code>&quot;...&quot;</code>) 里的意义一样。 这两种引号唯一的区别是，不需要在单引号里转义双引号 <code>&quot;</code> (但此时必须把单引号转义成 <code>\'</code>)，反之亦然。</p>
<h4 id="更多的控制流工具">更多的控制流工具</h4>
<h5 id="range函数">range（）函数：</h5>
<p>内置函数 <a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#range"><code>range()</code></a> 用于生成等差数列：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">for i in range(5):
</span></span><span class="line"><span class="cl">    print(i)
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">0
</span></span><span class="line"><span class="cl">1
</span></span><span class="line"><span class="cl">2
</span></span><span class="line"><span class="cl">3
</span></span><span class="line"><span class="cl">4
</span></span></code></pre></td></tr></table>
</div>
</div><p>生成的序列绝不会包括给定的终止值；<code>range(10)</code> 生成 10 个值——长度为 10 的序列的所有合法索引。range 可以不从 0 开始，且可以按给定的步长递增（即使是负数步长）：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">list(range(5, 10))
</span></span><span class="line"><span class="cl">[5, 6, 7, 8, 9]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">list(range(0, 10, 3))
</span></span><span class="line"><span class="cl">[0, 3, 6, 9]
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">list(range(-10, -100, -30))
</span></span><span class="line"><span class="cl">[-10, -40, -70]
</span></span></code></pre></td></tr></table>
</div>
</div><p>要按索引迭代序列，可以组合使用 <a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#range"><code>range()</code></a> 和 <a href="https://docs.python.org/zh-cn/3/library/functions.html#len"><code>len()</code></a>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">a = [&#39;Mary&#39;, &#39;had&#39;, &#39;a&#39;, &#39;little&#39;, &#39;lamb&#39;]
</span></span><span class="line"><span class="cl">for i in range(len(a)):
</span></span><span class="line"><span class="cl">    print(i, a[i])
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">0 Mary
</span></span><span class="line"><span class="cl">1 had
</span></span><span class="line"><span class="cl">2 a
</span></span><span class="line"><span class="cl">3 little
</span></span><span class="line"><span class="cl">4 lamb
</span></span></code></pre></td></tr></table>
</div>
</div><p>不过大多数情况下 <a href="https://docs.python.org/zh-cn/3/library/functions.html#enumerate"><code>enumerate()</code></a> 函数很方便，详见 <a href="https://docs.python.org/zh-cn/3/tutorial/datastructures.html#tut-loopidioms">循环的技巧</a>。</p>
<p>如果直接打印一个 range 会发生意想不到的事情：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">range(10)
</span></span><span class="line"><span class="cl">range(0, 10)
</span></span></code></pre></td></tr></table>
</div>
</div><p><a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#range"><code>range()</code></a> 返回的对象在很多方面和列表的行为一样，但其实它和列表不一样。该对象只有在被迭代时才一个一个地返回所期望的列表项，并没有真正生成过一个含有全部项的列表，从而节省了空间。</p>
<p>这种对象称为可迭代对象 <a href="https://docs.python.org/zh-cn/3/glossary.html#term-iterable">iterable</a>，适合作为需要获取一系列值的函数或程序构件的参数。<a href="https://docs.python.org/zh-cn/3/reference/compound_stmts.html#for"><code>for</code></a> 语句就是这样的程序构件；以可迭代对象作为参数的函数例如 <a href="https://docs.python.org/zh-cn/3/library/functions.html#sum"><code>sum()</code></a>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sum(range(4))  # 0 + 1 + 2 + 3
</span></span><span class="line"><span class="cl">6
</span></span></code></pre></td></tr></table>
</div>
</div><p>后续我们会看到更多返回可迭代对象并以可迭代对象作为参数的函数。 在 <a href="https://docs.python.org/zh-cn/3/tutorial/datastructures.html#tut-structures">数据结构</a> 一章中，我们将讨论 <a href="https://docs.python.org/zh-cn/3/library/stdtypes.html#list"><code>list()</code></a> 的更多细节。</p>
<p>列表的常见方法见
<a href="https://docs.python.org/zh-cn/3/tutorial/datastructures.html">https://docs.python.org/zh-cn/3/tutorial/datastructures.html</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">append（value）:
</span></span><span class="line"><span class="cl">extend(iterable):
</span></span><span class="line"><span class="cl">insert(index,value):
</span></span><span class="line"><span class="cl">remove(value):
</span></span><span class="line"><span class="cl">pop(index=-1):
</span></span><span class="line"><span class="cl">clear():
</span></span><span class="line"><span class="cl">index(value,start,stop)
</span></span><span class="line"><span class="cl">count(value);
</span></span><span class="line"><span class="cl">sort(*,key=noe,reveres = False);
</span></span><span class="line"><span class="cl">reveres():
</span></span><span class="line"><span class="cl">copy:
</span></span></code></pre></td></tr></table>
</div>
</div><h5 id="列表实现堆栈后进先出">列表实现堆栈：后进先出</h5>
<p>append();pop()</p>
<h5 id="列表实现队列性能很差最好使用collectionddeque">列表实现队列：性能很差，最好使用collectiond.deque</h5>
<h5 id="列表推导式">列表推导式:</h5>
<p>创建列表非常方便
筛选满足某些特定条件的元素/对全部元素进行操作</p>
<h5 id="嵌套的列表推导式">嵌套的列表推导式</h5>
<p>实际应用最好用内置函数替代复杂的流程函数</p>
<h5 id="del区分与pop">del：区分与pop</h5>
<p>可接单个元素如a[0],切片，或者单个变量a</p>
<h5 id="元组和序列">元组和序列</h5>
<p>元组：通过&rsquo;,&lsquo;隔开，通常使用（）标注，imutable，但是可以存储mutable的元素如列表
特别的单个元组：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">empty = ()
</span></span><span class="line"><span class="cl">singleton = &#39;hello&#39;,    # &lt;-- 注意末尾的逗号
</span></span><span class="line"><span class="cl">len(empty)
</span></span><span class="line"><span class="cl">0
</span></span><span class="line"><span class="cl">len(singleton)
</span></span><span class="line"><span class="cl">1
</span></span><span class="line"><span class="cl">singleton
</span></span><span class="line"><span class="cl">(&#39;hello&#39;,)
</span></span></code></pre></td></tr></table>
</div>
</div><p>解包：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">x, y, z = t
</span></span></code></pre></td></tr></table>
</div>
</div><h5 id="集合set-无序去重">集合：set 无序，去重</h5>
<p>创建空集合只能用set（）；创建可以用{}和set（）；
集合推导式</p>
<h5 id="字典">字典：</h5>
<p>以key（键）为索引；任何不可变类型都可以作为key
特别的，元组仅包含（字符串，元组，数字）时也可以为key，但是如果它直接或者间接包含可变元素，则不可
键对值的集合，键唯一</p>
<p>下标操作d[key]可能（空值时即key不存在）会导致KeyError，最好用get（），返回值或者none：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">list（d） ：获得所有key的列表，不包含value
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sort（），in
</span></span><span class="line"><span class="cl">dict（）：构造函数
</span></span></code></pre></td></tr></table>
</div>
</div><p>字典推导式：关键字是比较简单的字符串时，直接用关键字参数指定键值对更便捷：</p>
<p>Copy</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">dict(sape=4139, guido=4127, jack=4098)
</span></span><span class="line"><span class="cl">{&#39;sape&#39;: 4139, &#39;guido&#39;: 4127, &#39;jack&#39;: 4098}
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="循环的技巧">循环的技巧</h4>
<p>同时获得字典的（key，value） ：item（）；
同时获得（index，value）：enumerate（）；
同时循环两个或者多个序列时：zip（）；
配置这个看的更明确</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">questions = [&#39;name&#39;, &#39;quest&#39;, &#39;favorite color&#39;]
</span></span><span class="line"><span class="cl">answers = [&#39;lancelot&#39;, &#39;the holy grail&#39;, &#39;blue&#39;]
</span></span><span class="line"><span class="cl">for q, a in zip(questions, answers):
</span></span><span class="line"><span class="cl">    print(&#39;What is your {0}?  It is {1}.&#39;.format(q, a))
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">What is your name?  It is lancelot.
</span></span><span class="line"><span class="cl">What is your quest?  It is the holy grail.
</span></span><span class="line"><span class="cl">What is your favorite color?  It is blue.
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">逆向：reverse（）
</span></span><span class="line"><span class="cl">排序：sorted（）
</span></span><span class="line"><span class="cl">去重：set（）
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="条件控制">条件控制</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">in  ；not in
</span></span><span class="line"><span class="cl">is ；not is
</span></span><span class="line"><span class="cl">链式比较操作：a &lt; b == c
</span></span><span class="line"><span class="cl">优先级:not &gt; and &gt; or
</span></span></code></pre></td></tr></table>
</div>
</div><h3></h3>
]]></content:encoded>
    </item>
  </channel>
</rss>
