《利用Python进行数据分析·第2版》第3章 Python的数据结构、函数和文件

论坛 期权论坛     
选择匿名的用户   2021-5-28 02:15   21   0
<div class="content-detail markdown-body">
<div class="show-content-free">
  <hr>
  <p><a href="https://www.jianshu.com/p/04d180d90a3f">第1章 准备工作</a><br><a href="https://www.jianshu.com/p/fc93e943e94a">第2章 Python语法基础,IPython和Jupyter</a><br> 第3章 Python的数据结构、函数和文件<br><a href="https://www.jianshu.com/p/a380222a3292">第4章 NumPy基础:数组和矢量计算</a><br><a href="https://www.jianshu.com/p/161364dd0acf">第5章 pandas入门</a><br><a href="https://www.jianshu.com/p/047d8c1c7e14">第6章 数据加载、存储与文件格式</a><br><a href="https://www.jianshu.com/p/ac7bec000dad">第7章 数据清洗和准备</a><br><a href="https://www.jianshu.com/p/cfc035bae567">第8章 数据规整:聚合、合并和重塑</a><br><a href="https://www.jianshu.com/p/7a0eafdd1340">第9章 绘图和可视化</a><br><a href="https://www.jianshu.com/p/b94deb5c7eb1">第10章 数据聚合与分组运算</a><br><a href="https://www.jianshu.com/p/29ece4592178">第11章 时间序列</a><br><a href="https://www.jianshu.com/p/9d093ebcc5d8">第12章 pandas高级应用</a><br><a href="https://www.jianshu.com/p/e46a1ac36aa5">第13章 Python建模库介绍</a><br><a href="https://www.jianshu.com/p/72b6c83bb69e">第14章 数据分析案例</a><br><a href="https://www.jianshu.com/p/3c3f7da88516">附录A NumPy高级应用</a><br><a href="https://www.jianshu.com/p/fb6719a18cea">附录B 更多关于IPython的内容(完)</a></p>
  <hr>
  <p>本章讨论Python的内置功能,这些功能本书会用到很多。虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的。</p>
  <p>我们会从Python最基础的数据结构开始:元组、列表、字典和集合。然后会讨论创建你自己的、可重复使用的Python函数。最后,会学习Python的文件对象,以及如何与本地硬盘交互。</p>
  <h1>3.1 数据结构和序列</h1>
  <p>Python的数据结构简单而强大。通晓它们才能成为熟练的Python程序员。</p>
  <h2>元组</h2>
  <p>元组是一个固定长度,不可改变的Python序列对象。创建元组的最简单方式,是用逗号分隔一列值:</p>
  <pre class="blockcode"><code class="python">In [1]: tup &#61; 4, 5, 6

In [2]: tup
Out[2]: (4, 5, 6)
</code></pre>
  <p>当用复杂的表达式定义元组,最好将值放到圆括号内,如下所示:</p>
  <pre class="blockcode"><code class="python">In [3]: nested_tup &#61; (4, 5, 6), (7, 8)

In [4]: nested_tup
Out[4]: ((4, 5, 6), (7, 8))
</code></pre>
  <p>用<code>tuple</code>可以将任意序列或迭代器转换成元组:</p>
  <pre class="blockcode"><code class="python">In [5]: tuple([4, 0, 2])
Out[5]: (4, 0, 2)

In [6]: tup &#61; tuple(&#39;string&#39;)

In [7]: tup
Out[7]: (&#39;s&#39;, &#39;t&#39;, &#39;r&#39;, &#39;i&#39;, &#39;n&#39;, &#39;g&#39;)
</code></pre>
  <p>可以用方括号访问元组中的元素。和C、C&#43;&#43;、JAVA等语言一样,序列是从0开始的:</p>
  <pre class="blockcode"><code class="python">In [8]: tup[0]
Out[8]: &#39;s&#39;
</code></pre>
  <p>元组中存储的对象可能是可变对象。一旦创建了元组,元组中的对象就不能修改了:</p>
  <pre class="blockcode"><code class="python">In [9]: tup &#61; tuple([&#39;foo&#39;, [1, 2], True])

In [10]: tup[2] &#61; False
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
&lt;ipython-input-10-c7308343b841&gt; in &lt;module&gt;()
----&gt; 1 tup[2] &#61; False
TypeError: &#39;tuple&#39; object does not support item assignment
</code></pre>
  <p>如果元组中的某个对象是可变的,比如列表,可以在原位进行修改:</p>
  <pre class="blockcode"><code class="python">In [11]: tup[1].append(3)

In [12]: tup
Out[12]: (&#39;foo&#39;, [1, 2, 3], True)
</code></pre>
  <p>可以用加号运算符将元组串联起来:</p>
  <pre class="blockcode"><code class="python">In [13]: (4, None, &#39;foo&#39;) &#43; (6, 0) &#43; (&#39;bar&#39;,)
Out[13]: (4, None, &#39;foo&#39;, 6, 0, &#39;bar&#39;)
</code></pre>
  <p>元组乘以一个整数,像列表一样,会将几个元组的复制串联起来:</p>
  <pre class="blockcode"><code class="python">In [14]: (&#39;foo&#39;, &#39;bar&#39;) * 4
Out[14]: (&#39;foo&#39;, &#39;bar&#39;, &#39;foo&#39;, &#39;bar&#39;, &#39;foo&#39;, &#39;bar&#39;, &#39;foo&#39;, &#39;bar&#39;)
</code></pre>
  <p>对象本身并没有被复制,只是引用了它。</p>
  <h2>拆分元组</h2>
  <p>如果你想将元组赋值给类似元组的变量,Python会试图拆分等号右边的值:</p>
  <pre class="blockcode"><code class="python">In [15]: tup &#61; (4, 5, 6)

In [16]: a, b, c &#61; tup

In [17]: b
Out[17]: 5
</code></pre>
  <p>即使含有元组的元组也会被拆分:</p>
  <pre class="blockcode"><code class="python">In [18]: tup &#61; 4, 5, (6, 7)

In [19]: a, b, (c, d) &#61; tup

In [20]: d
Out[20]: 7
</code></pre>
  <p>使用这个功能,你可以很容易地替换变量
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP