python基础之数据类型

  • 数字(number)

    • 整数(int)

      • 不可变数据类型

      • python2 长整数Long

      • python3 没有长短之分

    • 浮点数(float):小数有精度 2.0,1.2

    • 复数(complex):2+3j

  • 布尔值(bool):大小写敏感

    • 非空非0为真,0或空为假

  • 字符串(str):不可变数据类型,C语言中一个单词为chr:’a‘,多个为chr*:’abc‘;python没有之分就一个,’sdsf‘

    • abc‘,“abc”,’‘’abc‘’‘ 字符串中的都是无意义的,除了一些\n \t转义符

    • ’i‘m a boy':需要转义\ ’i\‘m a boy'

    • 转义符:\,\n换行符,\t制表符,\\转义\

    • 格式化:

      • %s 任意字符串

      • %d 任意整数

      • %f 任意浮点数

      • %x 十进制整数

      • format()

        >>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
        'Hello, 小明, 成绩提升了 17.1%'
    • 有序序列可做切片,索引操作

  • 列表(list):[]表示,[1,'s'],可变数据类型

    • 有序序列可做切片,索引操作

  • 元组(tuple):不可变数据类型,()表示,('a',2)

    • 有序序列可做切片,索引操作

    • 一个数据的元组(2,)

  • 字典(dict):可变数据类型

    • 无序数据类型,不可做切片,索引操作

  • 集合(set):可变数据类型

    • 无序数据类型,不可做切片,索引操作

    • 经过哈希运算,数据不重复

索引,切片:有序序列的操作

  • 索引:用索引来访问list中每一个位置的元素,记得索引是从0开始的 ,如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素

    • 'smk'[0] = 's','smk'[-1] = 'k'
    • 索引数字:0123
      字符串:'ssds'
      索引数字:-4-3-2-1
  • 切片:对一个有序数据截取需要的数据

    • 切片超出范围不会报错,返回空,索引会报错

    • >>> 'sdfgdg'[0:2]
      'sd'
      >>> 'sdfgdg'[-1:3]#默认只能从左往右取
      ''
      >>> 'sdfgdg'[-1:-3]
      ''
      >>> 'sdfgdg'[-1:6]
      'g'
      >>> 'sdfgdg'[-1:1]
      ''
      >>> 'sdfgdg'[-6:6]
      'sdfgdg'
    • 带有步长:不管step正负,索引值都不会变

      • step为正,从左往右,

      'asdf'[1:-1:2] = 'ad'#左闭右开,包括a本身 
      • step为负,从右往左

      'asdf'[1:-1:-1] = ''
      #
      这样取是不行的,只能从右往左取,从起点1开始去往右走,1索引值是s,终点到-1,索引值是f,所以是取不到的。假如是'asdf'[1:0:-1],往右走取0,索引值是a,左闭右开所以是能取到s
    • 范围切片赋值:

      • 坑位对应数据个数:对应坑位依次排开

      • 数据个数大于或小于坑位:追加至原数据位置

      • 假如有步长,数据必须对应坑位个数,不对应报错

        >>> a = [1,2,3,5,4]
        >>> a[:2]
        [1, 2]
        >>> a[:2] = [1,5,6]
        >>> a
        [1, 5, 6, 3, 5, 4]
        >>> a[:2] = [5,6]
        >>> a
        [5, 6, 6, 3, 5, 4]
        >>> a[:2]
        [5, 6]
        >>> a[:2] = ['l']
        >>> a
        ['l', 6, 3, 5, 4]
        >>> a[:-1:2]
        ['l', 3]
        >>> a[:-1:2] = ['k','m','g']
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ValueError: attempt to assign sequence of size 3 to extended slice of size 2
        >>> a[:-1:2] = ['k','m']
        >>> a
        ['k', 6, 'm', 5, 4]

字典集合的操作

  • 字典(dict):{a:'b',1:'k'}key值不可变数据类型,value可变数据类型
    • mydict = dict(([1,2],[4,5])) 工厂函数

    • 内建方法dict.fromkeys([1,2,3,4,5],'a') 批量创建

    • hash算法处理过的数据,通过key值指向一个value值

    • for循环访问key值

    • 字典更新:

      • 不存在的key值时,dict[key] = value 创建一个新的key值

      • update:mydict.update(((1,2),)) 二元组

    • mydict.keys() mydict.values() mydict.get(key)

    • 删除字典:

      • del mydict[key]

      • del mydict

      • mydict.pop(key) 会返回对应的key值

      • mydict.clear() 清空字典

  • 集合:(set)
    • 集合可以去重,数据经过hash处理,储存不可变数据

    • 工厂函数 myset = set((1,2),)

    • 不可变集合:f = frozenset([1,2,3]) 不可以增删改查

    • 可变集合: g = set([1,2,3])

      • set.add(不可变数据类型) 更新集合,原数据加进去,不拆分

      • setupdate(数据集) 把数据集拆分成单个元素加进去

    • 删除集合:

      • set.pop() 不接受参数,随机删除返回删除值

      • set.remove(key) 接受参数

      • set.discard(key) 接受参数

      • del myset

      • set.clear()

    • 集合for访问

    • 集合判断:var in myset

    • 集合运算:

      • 子集:a < b或a.issubset(b) 判断a是否是b的子集

      • 超集:a > b或a.issuperset(b) 判断a是否是b的超集

      • 交集:a&b(intersetion)a和b相同的元素

      • 并集:a|b(union)a和b全部的元素

      • 差补:a-b(symmetric_difference)a去掉b的所有的元素(包括相同的)只留下自己独有的

      • 差分:a^b(symmetric_difference_update) 去掉a和b相同的元素,交集的反集

 

 

 

posted @ 2018-06-16 20:00  Kmnskd  阅读(138)  评论(0编辑  收藏  举报