美文网首页读书
关于python3的三个小疑问

关于python3的三个小疑问

作者: pythoner7 | 来源:发表于2019-04-10 23:55 被阅读2次

    python中列表 元组 字典 集合的区别

    (1)列表

    什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:

    lst = ['arwen',123]
    print lst[0]
    print lst[1]
    lst[0] = 'weiwen'
    

    向list中添加项有两种方法:append和extend。append是向
    如:

    (2)元组

    元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示,如:

    tup = ('arwen',123)
    print tup[0]
    print tup[1]
    
    (3)集合就是我们数学学的集合,没有什么特殊的定义。

    集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合,如:

    lst = [ 1, 1, 0]
    lst_set = set( lst )  #lst_set 为1 , 0
    tup = (2, 2, 1)
    tup_set = set( tup) # tup_set为2 , 1
    for item in lst_set:
      print item
    
    (4)最后一个是字典。字典存储键值对数据,如:
    {
    1:a,
    2:b,
    3:c
    }
    

    字典最外面用大括号,每一组用冒号连起来,然后各组用逗号隔开。
    字典最大的价值是查询,通过键,查找值。

    python3中pop()与remove()的区别

    # coding=utf-8
    fruit = ['apple', 'pear', 'banana' ]
    #指定索引删除
    fruit.pop(0)
    #符合元素删除,具体数值
    fruit.remove('pear')
    print(fruit)
    运行结果:
    ['banana']
    

    根据以上事例,可以看出pop()必须使用索引来删除元素,以及remove()必须要指定元素值来删除,不然会出错!!!!!!

    下面为反例

    pop()用元素值的错误预报

    pop()用元素值的错误预报

    # coding=utf-8
    fruit = ['apple', 'pear', 'banana' ]
    fruit.pop('apple')
    
    运行结果:
    Traceback (most recent call last):
      File "...XXX.py", line 5, in <module>
        fruit.pop('apple')
    TypeError: 'str' object cannot be interpreted as an integer
    

    remove()用索引的错误预报

    # coding=utf-8
    
    fruit = ['apple', 'pear', 'banana' ]
    fruit.remove(0)
    print(fruit)
    
    运行结果:
    Traceback (most recent call last):
      File "...XXX.py", line 4, in <module>
        fruit.remove(0)
    ValueError: list.remove(x): x not in list
    

    python 没有++运算符的疑问

    学习Python,当想要自增运算的时候很自然的 a++,结果发现编译器是不认识 ++ 的
    关于自增操作,python 不使用 ++ 的哲学逻辑:编译解析上的简洁与语言本身的简洁,就不具体翻译了
    python 与 c 语言概念上的一些差异,语言描述的可能未必准确,直接上例子:

    >>> b = 5
    >>> a = 5
    >>> id(a)
    162334512
    >>> id(b)
    162334512
    >>> a is b
    True
    

    可以看出, python 中,变量是以内容为基准而不是像 c 中以变量名为基准,所以只要你的数字内容是5,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 python 中一个变量可以以多个名称访问
    这样的设计逻辑决定了 python 中数字类型的值是不可变的,因为如果如上例,a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的

    因此,正确的自增操作应该 a = a + 1 或者 a += 1,当此 a 自增后,通过 id() 观察可知,id 值变化了,即 a 已经是新值的名称 关于python3的三个小疑问

    相关文章

      网友评论

        本文标题:关于python3的三个小疑问

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