美文网首页
python3 数据类型

python3 数据类型

作者: meetliuxin | 来源:发表于2018-06-26 17:05 被阅读0次

    标准数据类型
    Python3 中有六个标准的数据类型:

    • Number(数字): int、float、bool、complex(复数)
    • String(字符串)
    • List(列表)
    • Tuple(元组)
    • Sets(集合)
    • Dictionary(字典)

    在Python中变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。

    一、Number(数字)

    Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
    注意:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

    int类型的数据是没有长度限制的,它的最大长度只与计算机的内存有关。

    bin(i) 返回二进制表示结果,
    hex(i) 十六进制,
    int(i) 整数(如果x是浮点数就会返回其整数部分,
    oct(i) 八进制,
    int(s,base)将字符串转换为整数.幂可以用** 实现(10** 5,2**4)。内置的float与str类型都支持到整数的转换。
    chr() 将数字转换成字符,
    ord() 将字符转换成ASCII码;
    round() 函数对值进行四舍五入。整数和浮点数相加结果是浮点型。

    python提供了三种浮点值:内置的float与complex类型,以及标准库的decimal.Decimal类型

    一、float类型存放双精度的浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,进行相等性比较不可靠。
    简单比较两个float是否相等:

    import os
    def equal_float(a,b):
         return abs(a-b)<=sys.float_info.epsilon
    

    math模块提供了很多float数据:math.pi
    math.pow(x,y):x的y次幂(浮点值)

    二、decimal
    如果需要高精度,可使用decimal模块的decimal.Decimal数,这种类型可以准确的表示循环小数,但是处理速度较慢,适合于财政计算。
    a=decimal.Decimal(5555)或a=decimal.Decimal("555.555")
    三、复数
    复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。如z=3.5+2j,其中实部和虚部可分别用z.real,z.imag取得。专用函数z.conjugate()可以反转虚部的符号。

    二、字符串

    字符串的追加可用+=,但并不是特别高效,连接大量字符串可用seq.join()。
    "xx".join(seq)则可以将xx依次插入每两个seq元素之间,形成一个str。
    字符串的切片操作

    字符串分割partition(),rpartition(),split(),strip():

    • patition()将字符串分割为三段:关键字前,关键字,关键字后.
    • split()将字符串以关键字为分割点进行分割(结果不包含关键字,多个关键字会多次分割)
    • strip()将字符串的首尾空格去掉,如果给了参数,就去掉首尾的参数,但参数必须是位于字符串的首尾,不然去不掉.分支函数lstrip(),rstrip()为去掉左边或者右边的末端空格或字符.

    字符串常用操作函数:

    s.strip(chars);
    s.find(x,start,end);
    s.index(x.start,end);
    s.format();
    s.partition(x);
    s.replace(x,y,n)    用y替换x,可选n表示最多替换n次;
    s.split(x,n)       最多分割n次,s.rsplit()从右边开始分割;
    s.splitlines(f)     返回在行终结符处进行分割产生的列表,并剥离行终结符(除非f为True);
    s.count(x,start,end)  计数;
    s.join(seq)       返回seq的每个项都以s连接起来的结果,s可以为空;
    s.capitalize()   将字符串首字母大写;
    s.lower()        将s中的字符变为小写;
    s.upper()       返回大写化版本;
    s.title()        将每个单词的首字母大写;
    s.swapcase()      将大写变小写,小写变大写;
    s.islower()       如果s至少有一个可小写的字符且所有可小写的字符都是小写则返回True;
    s.isupper()       如果s至少有一个可大写的字符且所有可大写的字符都是大写则返回True;
    s.istitle()       如果s是一个非空的首字母大写字符串,则返回True;
    s.zfill(w)       返回s的副本,如果比w短,从开始处用0补充,使长度和w一样;
    s.center(width,char) 返回一个以s为中心长度为width的字符串,如果有空余则用可选参数char或空格进行填充,如width<len(s),则返回整个s;
    s.ljust(width,char)  同上,左对齐;
    s.rjust(width,char)  同上,右对齐;
    s.encode(endoding,err) 返回一个bytes对象,该对象使用默认的编码格式或指定的编码格式来表示该字符串,并根据可选的err参数处理错误;
    s.endswith(x,start,end)如果以x结尾则返回True,否则返回False;
    s.startswith(x,start,end)如果以x开始则返回True;
    s.expandtabbs(size)  返回s的一个副本,其中的制表符使用8个或指定数量的空格替换;
    s.isalnum()       判断是否全是字母数字且非空;
    s.isalpha()       判断是否全是字母且非空;
    s.isdecimal()      判断是否每个字符都是Unicode的基数为10的数字;
    s.isdigit()       判断是否每个字符都是ASCII数字;
    s.isidentifier()    判断是否不为空
    s.isnumeric()      判断是否每个字符都是数值型的Unicode字符且非空;
    s.isprintable()    判断是否每个字符都是可打印的且非空;
    s.isspace()       判断是否每个字符都是空白字符;
    s.maketrans()
    s.translate()

    三、集合set

    集合(set)是一个无序不重复元素的序列。

    基本功能是进行成员关系测试和删除重复元素。

    可以使用大括号 { } 或者 set() 函数创建集合,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    集合是没索引位置区分的,也不能分片或按步距分片。集合中每个数据都是独一无二的,所以集合常被用于删除重复的数据项(x=list(set(x)))。

    1、集合常用函数:

       s.add(x)  添加x到集合s中;
    
       s.clear()  清空;
    
       s.pop()    移除集合中任意一项,如果为空了则返回产生KeyError异常;
    
       s.remove(x) 移除x项,如x不存在就产生KeyError异常;
    
       s.discard(x)  如果x 存在就移除掉该项;
    
       s.copy()   浅拷贝;  *
    
       s.different(t)s-t  返回一个新集合,其只包含s但不在集合t中;  *
    
       s.difference_update(t)s-=t  移除每一个在集合t但不在s中的项;
    
       s.intersection(t)s&t     返回s和t的交集;  *
    

    2、集合联合操作运算符结果:

       s|t,合集;s&t,交集;s-t,减去与t的交集;s^t,合集减去交集。
    

    3、集合内涵(同列表内涵)

       {expression for item in iterable}
    
       {expression for item in iterable if condition}
    

    4、固定集合(frozenset())

       一旦创建了就不可改变,同static,可用的函数只有那些不改变集合本身内容的函数
    

    四、列表list

       1列表也可存储任意类型的数据,且可使用比较操作符(逐项进行比较)和修改列表内容。
    
       2.列表支持元组的所有操作,同时还有以下函数:
    
       append()  追加
    
       count(x)  统计x出现的次数
    
       index(x,start,end)找x,如没有则产生一个ValueError,
    
       extend()    (等同于+=),
    
       insert(i,x)  (在索引位置i处插入x),
    
       pop()    移除最后一项
    
       pop(i)    (移除i索引位置处的数据项,如没有i值,则默认移除最后一项),
    
       remove(x)  (移除从左边开始出现的第一个数据为x的项,如没有则返回一个ValueError),
    
       reverse()    反转,
    
       sort()     排序。
    

    列表生成式:

    [expression for item in iterable](对iterable中每个数据项进行expression操作)
    
    [expression for item in iterable if condition],对限定条件的对象进行操作。
    
    #计算闰年。(range同样为前闭后开)
    例:leaps=[y for y in range(1900,2000) if (y%4==0 and y%100!=0)or(y%400==0)] 
    

    五、字典dict

    1.常用函数

       d.clear()  清空
    
       d.copy()  浅拷贝
    
       d.pop(k,v) 返回k的值,并删除k项,如果k不存在,就返回KeyError或者v(如v存在的话)
    
       d.popitem() 移除任意一对键-值,如果d为空就产生KeyError
    
       d.values()  返回字典中所有值的视图
    
       d.keys()   返回字典所有键的视图
    
       d.items()  返回字典所有(key,value)对的视图
    
       d.get(k)   返回k的值,如果k不存在就返回None
    
       d.get(k,v)  返回k的值,如果k不存在就返回v
    
       d.setdefault(k,v) 同get(),如果k不存在就插入一个k项,值为None或者v(如果给了v)
    
       d.fromkeys(s,v) 返回一个dict,它的键为序列s的项,值为None或者v(如果给了v)
    
       d.update(a) 用a更新d,如果键已存在则更新值,如不存在则插入。a可以是dict也可以是(key,value)对的一个iterable.
    

    2、对字典的迭代

       对键:for key in d:    print(key)
    
              或:for key in d.keys():   print(key)
    
       对值:for value in d.values():     print(value)
    
       对键-值:for key,value in d.items():    print(key,value)
    
              或:for item in d.items():    print(item[0],item[1])
    

    3、字典内涵

      {keyexpression:valueexpression for key ,value in terable}
    
      {keyexpression:valueexpression for key ,value in terable if condition}
    
     例:一个字典的键-值反转:inverted_d={v:k for k, v in d.items()}
    

    4、默认字典(collectons.defaultdict())

    默认字典永远不会产生KeyError,当查询的键不存在时,字典就会自动生成一个新的以此查询键为键的项,其值为创建字典时设定的默认值。

    例:words=collections.defaultdict(int),新增入此字典的默认值就会是数字0。传入的int为工厂函数(也就是一个不带括号、没有参数的函数),以后可用lambda函数进行简单设置。

    5、有序字典(collctions.OrderedDict())

    字典的数据项以插入的顺序进行保存,如果用了一个无序的字典来进行update(),得到的结果也会变成无序的。

    do=collections.OderedDict([('z',5),(3,6),(8,'a')])或者先建一个空的,再一项一项的添加。

    将一个普通字典转换成有序字典:d=collections.OderedDict(sorted(d.items()))。

    相关文章

      网友评论

          本文标题:python3 数据类型

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