zoukankan      html  css  js  c++  java
  • python数据类型

    学习一门语言,往往都是从Hello World开始。 但是笔者认为,在一个黑框框中输出一个“你好,世界”并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常常说的基础。本篇从python中的变量类型开始。

    五大标准数据类型

    在内存中存储的数据可以有多种类型。

    例如, 一个人的名字可以用字符来存储, 年龄可以用数字来存储, 爱好可以用集合来存储等等。

    Python有五个标准的数据类型:

    • Numbers(数字)
    • String(字符串)
    • List(列表)
    • Tuple(元组)
    • Dictionary(字典)
    • Set(集合)

    其中属于集合类型的数据类型有 列表、元组及字典。

    1. 数字(Numbers)

    数字数据类型用于存储数值。

    他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

    当你指定一个值时,Number对象就会被创建:

    1
    2
    var1 = 1
    var2 = 2

    del语句删除一些对象的引用,其语法是:

    1
    del var1[,var2[,var3[....,varN]]]]

    通过使用del语句可以删除单个或多个对象的引用。例如:

    1
    2
    del var1
    del var1, var2

    四种不同的数字类型:

    • int(有符号整型)
    • long(长整型[也可以代表八进制和十六进制])
    • float(浮点型)
    • complex(复数)

    a. int(整型)

      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

    b. long(长整型)
      跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,长整数数值不可能无限大。
      注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

    c. float(浮点型)

      浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
    d. complex(复数)
      复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

           注:Python中存在小数字池:-5 ~ 257

    小整数对象——小整型对象池

    在实际编程中,数值比较小的整数,比如1,2,29等,可能会非常频繁的出现。而在python中,所有的对象都存在于系统堆上。想想?如果某个小整数出现的次数非常多,那么Python将会出现大量的malloc/free操作,这样大大降低了运行效率,而且会造成大量的内存碎片,严重影响Python的整体性能。

    在Python2.5乃至3.3中,将小整数位于[-5,257)之间的数,缓存在小整型对象池中。

    2. 字符串(String)

    字符串或串(String)是由数字、字母、下划线组成的一串字符。

    它是编程语言中表示文本的数据类型。

    Python的字串列表有2种取值顺序:

    • 从左到右索引默认0开始的,最大范围是字符串长度少1
    • 从右到左索引默认-1开始的,最大范围是字符串开头

    如果你要实现从字符串中获取一段子字符串的话,可以使用变量 [头下标:尾下标],就可以截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

    比如:

    1
    = 'i love python'

    s[2:6]的结果是love。(顾头不顾尾,或左闭右开)

    操作实例:

    复制代码
    1 str = 'Hello World'
    2  
    3 print(str)                 #输出完整字符串
    4 print(str[0])              #输出字符串中的第一个字符
    5 print(str[2:5])            #输出字符串中第三个至第五个之间的字符
    6 print(str[2:])             #输出从第三个开始到最后的字符串
    7 print(str*2)               #输出字符串两次
    8 print('say: ' + str)       #输出连接的字符串
    复制代码

    可用操作:

    1 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', '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']
    '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)

    字符串的常用操作:

    • strip()移除空白,也可以去除其他的字符  
    • slipt()分割,默认以空格分割。也可以以其他的字符分割  
    • len()长度  切片:如print(x[1:3])也是顾头不顾尾   
    •            print(x[0:5:2])#0 2 4
    • capitalize()首字母大写
    • center()居中显示例如:x='hello'  print(x.center(30,'#'))
    • count():计数,顾头不顾尾,统计某个字符的个数,空格也算一个字符  
    • endswith()以什么结尾
    • satrtswith()以什么开头
    • find()查找字符的索引位置,如果是负数,代表查找失败   
    • index()索引  
    •   find()和index()的区别,如下图:
    •       
    • format()字符串格式化    
    • isdigit()判断是否是数字
    • islower()判断是否是全部小写
    • isupper()判断是否是全部大写
    • lower()全部转换为小写
    • upper()全部转换为大写
    • isspace()判断是否是全都是空格
    • istitle()判断是否是标题(首字母大写)  
    • swapcase()大小写字母翻转
    • join()连接
    • repalce()替换   
    •  ljust()左对齐   

      

    3. 列表(List)

    List(列表) 是 Python 中使用最频繁的数据类型。

    列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。

    可用方法:

    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

    操作实例:  

    复制代码
    1 list =  ['apple', 'jack', 798, 2.22, 36]
    2 otherlist = [123, 'xiaohong']
    3  
    4 print(list)                             #输出完整列表
    5 print(list[0])                          #输出列表第一个元素
    6 print(list[1:3])                        #输出列表第二个至第三个元素
    7 print(list[2:])                         #输出列表第三个开始至末尾的所有元素
    8 print(otherlist * 2)                    #输出列表两次
    9 print(list + otherlist)                 #输出拼接列表
    复制代码

    4. 元祖(Tuple)

    元组是另一个数据类型,类似于List(列表)。

    元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

    操作实例与列表相似

    可用操作:

    ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']

    5. 字典(Dictionary)

    字典(dictionary)是除列表以外Python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

    两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    可操作方法:

    1
    ['__class__''__contains__''__delattr__''__delitem__''__dir__''__doc__''__eq__''__format__''__ge__''__getattribute__''__getitem__''__gt__''__hash__''__init__''__iter__''__le__''__len__''__lt__''__ne__''__new__''__reduce__''__reduce_ex__''__repr__''__setattr__''__setitem__''__sizeof__''__str__''__subclasshook__''clear''copy''fromkeys''get''items''keys''pop''popitem''setdefault''update''values']

      

    操作实例:

    复制代码
     1 dict = {}
     2 dict['one'] = 'This is one'
     3 dict[2] = 'This is two'
     4 tinydict = {'name':'john','code':5762,'dept':'sales'}
     5  
     6 print(dict['one'])                          #输出键为'one'的值
     7 print(dict[2])                              #输出键为2的值
     8 print(tinydict)                             #输出完整的字典
     9 print(tinydict.keys())                      #输出所有键
    10 print(tinydict.values())                    #输出所有值
    dic = dict.fromkeys('abc', s)
    dic['a'].name='xxxx'
    for k,v in dic.items():
        print(v.name,'--')
    
    
    
    
    
    复制代码

    6.集合(set)

    一、集合的作用

    知识点回顾:可变类型是不可hash类型,不可变类型是可hash类型

        作用:去重,关系运算

        定义:可以包含多个元素,用逗号分割,集合的元素遵循三个原则:

          1.每个元素必须是不可变类型(可hash,可作为字典的key)

          2.没有重复的元素

          3.无序

        注意集合的目的是将不同的值存放在一起,不同的集合间用来做关系运算,无需纠结集合中的单个值

    可用方法:

    ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
  • 相关阅读:
    面向对象与类
    引用数据类型
    方法
    java for 语句的用法
    java 数组
    Scanner与Random
    java基本语法
    java介绍及安装。
    数据库设计
    NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题
  • 原文地址:https://www.cnblogs.com/LWK5100/p/14239196.html
Copyright © 2011-2022 走看看