• 开发技术--浅谈python数据类型


    开发|浅谈python数据类型

    在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文章中提一下。并且我自己会根据这些内容进行相应的补充与扩展。
    文章定位:不是科普文,是自己对于自己学习的总结。

    前言

    目前所有的文章思想格式都是:知识+情感。
    知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。
    情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。
    

    正文

    正文的主要内容是:Python的所有数据类型,包含None,布尔,数字,字符串,元祖,字典,集合,有序字典,冰冻集合。

    基础知识

    1.首先,需要知道Python这个语言是怎么自己区分数据类型的,使用的是:type() 方法

    s = 'rongming'
    print(type(s))  # <class 'str'>
    

    None类型

    None表示的就是Python中的None。作为Python中的一种数据类型哈,一般人估计不知道,记一下~~

    a = None
    print(type(a))  # <class 'NoneType'>
    

    布尔类型

    布尔类型:True/False
    当Python进行比较远算的时候,就会得到布尔类型的结果。

    In [1]: type(None)
    Out[1]: NoneType
    
    In [2]: a = 10
    In [3]: b = 8
    In [4]: c = a > b
    
    In [5]: c
    Out[5]: True
    
    In [6]: print(type(c))
    <class 'bool'>
    

    数字类型

    数字类型: int/float(整型/浮点型)
    整型就是整数,浮点型就是小数。
    注意:没有long 型

    In [7]: num = 666
    In [8]: num1 = 1.666
    
    In [9]: type(num)
    Out[9]: int
    
    In [10]: type(num1)
    Out[10]: float
    

    字符串类型

    1.字符串类型:str,属于不可变数据类型。

    2.字符串是字符的集合,并且需要使用单引号和双引号包含着。

    3.字符串的操作函数
    字符串的操作函数源码如下:

    In [12]: dir(s)
    Out[12]:
    [ 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
    

    4.常用的字符串操作函数
    1)切片操作,基于字符串中的每一个字符进行切片
    2)字符串的转义,使用两个
    3)center() 可以生成标题,左右包含指定符号
    4)count() 字符串数据类型中的字符数
    5)encode 编码,编码转换使用
    6)decode 解码,编码转换使用
    7) format() 字符串的格式化,适合在格式化的时候同一变量多处出现
    8) isdigit() 判断字符串是不是数字
    9)islower/isupper 表示字母是不是小写/大写
    10)join 进行字符串的拼接,很常用
    11)lstrip 去除字符串左边空格
    12)strip 去除字符串两边空格
    13)rstrip去除字符串右边空格
    14)replace进行字符串的替换
    15)split 进行字符串的切分
    16)rsplit 进行字符串的切分
    17)startswith 判断是不是以什么开头
    18)lower 统一为小写
    19)upper 统一为大写

    元祖类型

    1.元祖类型: tuple,属于不可变数据类型, ()

    2.常用函数:
    index() 返回对应元素的下标
    count() 统计元祖的个数

    3.元祖的可修改
    1)注意:虽然元祖属于不可变数据类型,但是依然可以修改元祖里面的值
    2)注意:在底层,不可变数据类型只是当前的表示是不可修改的,但是嵌套可变数据类型就可以修改,基于内部存放的是内存地址原理。

    In [26]: tu = (1, 2, 3, [4, 5, 6])
    
    In [27]: tu
    Out[27]: (1, 2, 3, [4, 5, 6])
    
    In [28]: tu[3][0] = 'rongming'
    
    In [29]: tu
    Out[29]: (1, 2, 3, ['rongming', 5, 6])
    

    列表类型

    1.列表数据类型: list ,属于可变数据类型。使用[].

    2.列表类型常用函数源码:

        In [32]: dir(d)
        Out[32]:
        [ 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    

    3.常用的函数
    1)append() 添加元素到列表的最后
    2)pop() 弹出最后一个元素(为空报错)
    3)extend() 将两个列表合并
    4)切片[ start: end : step]
    5)len 看列表的长度
    6)for循环遍历
    7)enumerate() 进行列表的遍历

    4)列表生成式

    In [33]: a = [i for i in range(10)]
    
    In [34]: a
    Out[34]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    字典类型

    1.字典类型:** dict,, 属于可变数据类型,使用 {} 表示。**

    2.字典的结构: {key: value, key: value, key: value, .....}
    注意: key是哈希值,所以字典的查询速度快
    补充知识点:hash知识,见hash。

    3.字典常见函数

     'clear',
     'copy',
     'fromkeys',
     'get',  #  获得字典中键对应的值
     'items',
     'keys',
     'pop',
     'popitem',
     'setdefault',  # 返回已经存在值,没有就修改
     'update', # 覆盖现象 
     'values'
    

    4.字典生成式

    In [5]: m = {i:i*3 for i in range(8)}
    
    In [6]: m
    Out[6]: {0: 0, 1: 3, 2: 6, 3: 9, 4: 12, 5: 15, 6: 18, 7: 21}
    

    5.深浅拷贝(两层与多层的区别)
    1)注意:python底层对于数据的存储是使用的内存地址进行映射。
    2)所有的可变数据类型,都是由不可变数据类型拼凑的
    3)所有的不可变数据类型,都是对于内部的单位整体是不可变的。
    4)可以使用copy工具包进行数据的deepcopy,实现数据的完全分离。如果只是简单的赋值与copy只可以解决一层嵌套关系。

    In [8]: d = {'a':[1, 2, 3], 'b': [6, 7, 8]}
    
    In [9]: d
    Out[9]: {'a': [1, 2, 3], 'b': [6, 7, 8]}
    
    In [10]: f = d
    
    In [11]: f['a'][0] = 'rongming'
    
    In [12]: d
    Out[12]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}
    
    In [13]: f
    Out[13]: {'a': ['rongming', 2, 3], 'b': [6, 7, 8]}
    

    集合类型

    1.结合数据类型:** set, 属于可变数据类型,使用{}表示。**

    2.集合天然去重,所以集合具有无序的性质与不重复的性质。

    3.常用的函数

     'add',
     'clear',
     'copy',
     'difference',  # -
     'difference_update',
     'discard',
     'intersection',  # &
     'intersection_update',
     'isdisjoint',
     'issubset',
     'issuperset',
     'pop',  # 随机pop出一个元素
     'remove',
     'symmetric_difference',
     'symmetric_difference_update',
     'union',  # |
     'update'
    

    冰冻集合

    1.注意:冰冻集合, frozenset属于不可变数据类型。所以不能进行修改

    In [21]: f = {1, 2, 3, 4, 5}
    
    In [22]: d = frozenset(f)
    
    In [23]: d
    Out[23]: frozenset({1, 2, 3, 4, 5})
    

    2.可以使用的函数

     'copy',
     'difference',
     'intersection',
     'isdisjoint',
     'issubset',
     'issuperset',
     'symmetric_difference',
     'union'
    

    有序字典

    1.有序字典:OrderedDict,保证了字典中的key的有序,在大量数据的时候,可以使用这个办法进行数据的快速查找(二分法了解一下~~)。

    In [25]: from collections import OrderedDict
    
    In [26]: d = OrderedDict({'name':'rongming', 'age':20})
    
    In [27]: d
    Out[27]: OrderedDict([('name', 'rongming'), ('age', 20)])
    

    2.常用函数

     'clear',
     'copy',
     'fromkeys',
     'get',
     'items',
     'keys',
     'move_to_end',
     'pop',
     'popitem',
     'setdefault',
     'update',
     'values'
    

    hash

    1)hash散列值具有不可逆与计算速度快的特点。

    2)python 实现hash
    注意:python中 重启之后hash的值不一样

    >>> hash('rongming')
    3985893259886982844
    >>> hash('rongming')
    3985893259886982844
    

    3)hash 的使用
    MD5(不要使用同一个密码注册多个账号,每一个数据库存储的密码不一定是密文)
    数字签名(公钥,私钥)
    区块链

    结束语

    本文基本上涵盖了所有的Python数据类型,量很大,算是自己对于自己之前学习的一个浓缩。
    当现在会看当时自己学习的内容的时候,万分感慨,真的是那句话:’终究还是自己感动了自己啊!‘

  • 相关阅读:
    php截取字符串
    PHP数据类型转换(字符转数字,数字转字符)
    php数组添加元素的方法
    更改jdk后,eclipse运行jsp出错
    U盘启动装完系统后 一拔下优盘 就不能进入系统
    SVN回滚版本
    在JSP中如何使用JavaBean
    Python使用numpy实现BP神经网络
    神经网络测试结果很差,该怎么做
    神经网络测试结果很差,该怎么做
  • 原文地址:https://www.cnblogs.com/Kate-liu/p/11237935.html
Copyright © 2020-2023  润新知