> For the complete documentation index, see [llms.txt](https://coding-girls-club.gitbook.io/python-turtle-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coding-girls-club.gitbook.io/python-turtle-tutorial/2-python-bian-cheng/2.3-shu-ju-jie-gou-xiao-hai-gui-sai-pao/2.3.1-python-ji-ben-shu-ju-jie-gou.md).

# 2.3.1 Python基本数据结构

本节目标：

* 了解数据结构的用处
* 初步掌握Python中的数据结构
* 掌握`for`循环

**Learning By Reading 难度：★ 重要性：★★★**

* 浏览[材料](https://www.jianshu.com/p/75425f405c25)，对数据结构有大致了解。
* 简单概括起来，数据结构将数据封装起来，让数据“有结构”，

  提供若干接口，更方便存储、访问、修改等操作。

如果我们有两个小海龟，我们可以分别叫它们`t1`，`t2`， 那如果有10个……42个呢？

这里，小海龟可以看作是数据，我们需要数据结构来让我们更方便地操纵这些小海龟。

`color`方法可以改变小海龟的颜色（试着自己搞清楚`color`的用法）， 如果每个小海龟的颜色不同，又要如何管理这些颜色呢？

**Learning By Reading 难度：★ 重要性：★★★★★**

* 阅读[材料](http://blog.miskcoo.com/2016/07/python-fundamental-data-structures)

  ，了解Python的基本数据结构，并为刚才的两个问题选择合适的数据结构。

刚才的材料中提到“列表的迭代”，其中用了`for`循环。 `for`循环和`while`循环有相似之处，区别在于`for`用于遍历“可迭代”的对象 （list，dict，tuple，str都是可迭代的对象）， `while`用于条件判断。

**Learning By Doing 难度：★ 重要性：★★★★★**

* 选做练习，图中拿斜线标出来的区域表示整个涂成某种颜色。
* 可能用到的`Turtle`类方法：`pencolor`，`fillcolor`，`begin_fill`，`end_fill`，

  利用`help`可以看到一些使用这些方法的例子。

  ![](http://s3.sinaimg.cn/large/5fd454d0gx6CiKhWWTo52&690)

  ![](http://s11.sinaimg.cn/large/5fd454d0gx6CiKxVzDk1a&690)

我们以第一幅图为例来讲一讲\~

数一数我们发现图中有6种颜色，并且每种颜色的图形是一样。 所以我们可以用一个循环，并且用一个`list`将6种颜色存起来。

```python
for color in ['gray', 'blue', 'green', 'cran', 'red', 'purple']:
    turtle.pencolor(color)
    turtle.fd(20)
    turtle.rt(60)
    turtle.fd(50)
    turtle.lt(60)
    turtle.fd(50)
    turtle.rt(60)
```

这里，我们用了一个`list`，它的元素有`['gray', 'blue', 'green', 'cran', 'red', 'purple']`。 注意这些元素都是字符串。如果不小心写成`[gray, blue, green, cran, red, purple]`， 那Python会去找叫`gray`的变量，把它的值作为`list`的元素。

**Tasks For Tutors**

* 你平时学习、工作中会使用什么，或者你了解什么更复杂一些的数据结构吗？

  它们设计出来是为了解决什么问题？
