美文网首页程序员
跟我读python3文档:022_数据结构(5. Data St

跟我读python3文档:022_数据结构(5. Data St

作者: 咖喱py | 来源:发表于2017-09-06 11:23 被阅读102次

    贯穿始终的理念:别废话,就是干!


    往期回顾

    • 匿名函数lambda
    • 列表的方法
    • del关键字
    • 列表推导式

    文档解读

    python3文档第五小节链接地址:5. Data Structures

    本章主要讲解5.3. Tuples and Sequences(元组和序列)5.4. Sets(集合)5.5. Dictionaries(字典)这三个小节


    5.3. Tuples and Sequences

    元组

    我们昨天简单提了一下,说他和列表很像,不过有两点不同。

    1. 它是以圆括号包裹的一组数据。
      形如:(1, 3, 4, 5)
    2. 列表内的值不可改变。

    注: 以后,对于列表内部的单一值,我们统称为元素
    元组内部也这样称呼。

    下面我们来介绍一些元组的特性:

    1. 我们在创建元组时,有两种形式,即,既可以带圆括号,也可以不带圆括号,但必须有分隔元素的逗号。
      参考下面的例子:
    >>> a = (123, 234, 345)           #有圆括号
    >>> a
    (123, 234, 345)
    >>> t = 12345, 54321, 'hello!'    #没有圆括号
    >>> t[0]
    12345
    >>> t
    (12345, 54321, 'hello!')
    
    1. 元组可以嵌套
    >>> t = (12345, 54321, 'hello!')
    >>> u = t, (1, 2, 3, 4, 5)         #嵌套元组
    >>> u
    ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
    
    1. 元组最重要的特性:元素不可改变!
    >>> t = (12345, 54321, 'hello!')
    >>> t[0] = 88888                    #尝试改变零号位元素
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    
    1. 元组的封装分拆

    封装:
    其实我们自开始看到的那个没有圆括号的赋值语句例子就是元组的封装。

    >>> t = 12345, 54321, 'hello!'
    

    分拆:
    也有翻译为解包的,但个人认为翻译为分拆更便于理解。
    所以,暂用分拆一词。

    和封装刚好相反,分拆是把元组的元素分别赋值到不同变量中。

    >>> x, y, z = t
    >>> x
    12345
    >>> y
    54321
    >>> z
    'hello!'
    

    注:在分拆过程中,左侧的变量数量,必须与右侧元组的元素数量一样多。

    可以试试不一样会发生什么?


    思考:
    如果元组内部元素是一个列表,那么这个列表里的元素可以更改吗?
    用下面这个元组,自己试试看~

    >>> v = ([1, 2, 3], [3, 2, 1])
    

    答案:

    >>> v = ([1, 2, 3], [3, 2, 1])
    >>> v[1][2]                  #查看元组1号列表元素内部的2号元素数值。
    1
    >>> v[1][2] = 3              #更改元组1号列表元素内部的2号元素数值。
    >>> v              
    ([1, 2, 3], [3, 2, 3])
    
    

    序列

    序列其实指的就是像列表、字符串、元组这一类的数据类型。当然,还有其他的,等我们遇到时在介绍。
    如果你想提前了解下,可以点击阅读这部分文档:序列


    5.4. Sets

    集合

    集合是用花括号括起来的数据,但他和列表、元组有很大区别。

    1. 集合是无序的。

    A set is an unordered collection with no duplicate elements.

    所以,我们不能用索引得到元素值。

    1. 集合内的元素是没有重复的。
      我们直接来看例子:
    >>> basket = {'apple', 'orange', 'banana', 'apple',  'orange', 'banana'}
    >>>basket
    {'apple', 'banana', 'orange'}
    

    看明白了吗?
    我在创建basket这个集合时,重复输入了三个水果的英文名称,但是当我们调用basket这个集合时,发现它之后3个不重复的元素了。
    并且和我们输入的顺序也是不一样的。

    并且集合也支持推导式,叫做集合推导式

    >>> a = {x for x in 'abracadabra' if x not in 'abc'}
    >>> a
    {'r', 'd'}
    

    5.5. Dictionaries

    字典

    字典可以说是大家今后应用最广泛的内置数据类型了。
    它其实可以看作是用键:值对表示的无序集合。
    形如下面这样:

    >>> tel = {'jack': 4098, 'sape': 4139}
    
    1. 用大括号包裹

    2. 用逗号分隔不同元素

    3. 元素内部,用分号分隔键、值

    4. 键必须是不可变类型,且在字典内部必须是唯一的,不能重名。
      因为字符串和数字是不可变类型,所以我们一般会用这两种类型作为键。
      因为元组也是不可变类型,所以也可以用作键。
      但是,如果元组直接或间接地包含任何可变对象,它不能用作键。
      比如,元组的元素是列表。

    5. 元素值通过键得到
      这一点区别于列表或者元组。他们是通过索引来得到元素值的。

    >>> tel = {'jack': 4098, 'sape': 4139}
    >>> tel['jack']
    4098
    

    由于今天介绍的数据类型比较多,所以就先写到这里。
    下一期将介绍几个很有用的知识点。
    比如,你有没有想过,如何创建这些数据类型?如何创建只有一个元素,或者没有元素的?
    这些都将在下一期介绍。
    本期主要需要掌握这些数据类型的形式,也就是长什么样子;以及他们有哪些特性就可以了~
    注:
    特性指:有序无序?可变不可变?索引方式?等。

    相关文章

      网友评论

        本文标题:跟我读python3文档:022_数据结构(5. Data St

        本文链接:https://www.haomeiwen.com/subject/cqrmjxtx.html