经验拾忆(纯手工)=> Python基本数据类型

数据结构

  1. 可变类型与不可变类型(重头戏)python

    基操:
           可变类型:[], {}                # 可增删改 查
           不可变类型: int float str ()    # 没法增删改, 只可查
    
       升操: + 与 += 的区别:
           也许不少人会说 + 和 += 是彻底等价的,或者知道区别,但也说不出个因此然
           看我操做:(忽略Python小整数池的内存固定分配问题)
               +: 
                   不管是可变类型 仍是 不可变类型, 都是新指向的空间
               +=: 
                   对于可变类型:原地操做,原指向,原空间
                   对于不可变类型:异地操做,新指向,新空间
                   
    
           我这里故意搞你一下思绪:见过 a=+1 么,能够运行试试。
           不要疑惑,告诉你答案:这个+1 表明 正负号的 正1。 虽然一点技术含量没有,可是你要懂
  2. 序列git

    也许叫可迭代对象更为合适,可是我喜欢叫序列。
       我认知的序列包括 [], {}, ()   # 请记住这个序列,数据处理最为重要
       此外说明一下:
           1. 个人代码大多都是Ipython运行完贴上去的, 因此你看见的out格式就表明print了,要懂~
           2. 所写的大多都是实际经验中经常使用的 或者 冷门可是好用的
           3. 列出的函数API有的嫌弃麻烦没有写参数,你要懂,(我这里没有顾及0入门的小白,谅解)
  3. 元祖数据结构

    基操:
           元祖属于不可变类型,不能增删改,因此函数少的可怜
           我用help查了一下,只有下面这2个函数。。。。。。
           a = (1,2,3)
           count() # 统计元素个数
           index() # 查找元素,并返回位置
       升操:
           a = (1)  # 哥们注意,这不是元祖,这是 整形1 .....
           a = (1,) # 这才是元祖,单元素元祖须要加逗号,记住便可,没必要纠结
  4. 经常使用字符串操做:app

    基操:
           a = ' 你2好 '
           a.find('你')  # 搜索目标字符串,找到 则 返回索引,找不到 则 返回-1 (推荐使用)
           a.split(2)    # 注意:不给参数,默认按全部 空白符 切割
           a.strip()  
       升操: 
           1. string库的灵活使用
               In [1]: import string
               In [2]: string.digits
               Out[2]: '0123456789'
               
               In [8]: string.ascii_letters
               Out[8]: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'           
                 
               In [9]: string.ascii_lowercase
               Out[9]: 'abcdefghijklmnopqrstuvwxyz'
               
               In [10]: string.ascii_uppercase
               Out[10]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
               
               In [12]: string.punctuation
               Out[12]: '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
               
           2. python3.6 - f模板字符串
               新语法引出来,只为刷三观,具体本身去学
               学过ES6可能会很熟悉 -> 其实就是模板字符串 (ES6和python语法真的很像)
               In [15]: name = '张三'     
               In [16]: f'名字:{name}'
               Out[16]: '名字:张三'
               
               若是你想学习更多f原语,请参考这位老哥->
               https://blog.csdn.net/sunxb10/article/details/81036693
  5. 经常使用列表操做:函数

    a = [4,3,2,1]
       基操:
           a.extend() # 参数若是是序列,则把这个序列解开,一个一个插入
           a.append() # 参数写什么,插入的就是什么
       升操:
           a[::] # 开辟空间 复制列表
           a.sort(key=)   # 记住这个key,能够写函数名 (后面也会写高阶函数的文章)
  6. 经常使用字典操做:学习

    基操:
           a = {1:2}
           a.update({key:value})   # 有则更新,无则添加(Key-Value算一个总体)
           a.setdefault(key, value) # 有此Key则不变 并返回value,无则插入key,value并返回None
           a.keys()     # 返回全部 key (注意:返回值能够理解为 集合对象)
           a.values()   # 返回全部 value (同上,返回值可理解为 集合对象)
           a.items()    # 返回全部 键值对 (同上,返回值可理解为 集合对象)
       升操:
           1. Key是字典做为序列的默认首选项
               解释对列表、元祖等序列等一系列操做若是应用在 字典上 就会只操做 Key
           2. 双层序列 和 字典 转换:
               seq2dict: dict( ((1,2),(3,4)) )
               dict2seq: tuple( {1:2,3:4}.items() )
  7. 经常使用集合操做:.net

    大前提: 集合=无序=去重
       基操:add | pop | remove | update 和 & | - ^
       升操:(集合的初始化方式的差别)
           In [57]: s1 = set('abcd') # 理解方式: 此初始化方式 会先遍历 整个 字符串
           In [58]: s1
           Out[58]: {'a', 'b', 'c', 'd'}
           
           In [59]: s2 = {'abcd'}   # 理解方式: 此初始化方法把 整个 字符串当作集合的 一个 元素
           In [60]: s2
           Out[60]: {'abcd'}
相关文章
相关标签/搜索