zoukankan      html  css  js  c++  java
  • python支持的基本数据类型及其简单操作

          python是属于弱类型语言,在定义数据类型之前,不须要先声明数据类型。相对应的在强类型语言中(比如c、java等),如果在定义数据之前,没有声明数据类型这回报错。

      python3 中,所指的数据类型,并非变量的,而是变量所指内存地址中储存的数据的基本类型。有Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典),可以分为两大类:

          不可变数据类型:Number(数字)、String(字符串)、Tuple(元组)

          可变数据类型:List(列表)、Set(集合)、Dictionary(字典)

     

    数据类型

    语法格式

    基本操作(增删改查)

     

    增加/改动

    删除

    查找

    其他常用函数或方法

    Number

    (数字)

    python3支持 int、float、bool、complex(复数)

    在pyhotn2.x中,还有长整形long

    不可变    

    type();

    isinstance();

    数学函数类;
    int();

    float();

    real();

    String

    (字符串)
    。序列

    字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 转义特殊字符。

    不可变

    del;

    count();
    capitalize();
    center();
    find();
    index();

    str();
    copy();


    strip(),lstrip(),rstrip();
    format();format_map(d);


    startwith();endwith();
    isalnum();isalpha();
    isdigit();isspace();
    islower();isupper();istitle();


    replace();
    split();
    join();
    swapcase();capitalize();

    casefold()

    zfill() ; rjust(); ljust();

    Booleans

    布尔值

    True;

    False。

           

    List

    (列表)。序列

    列表是写在方括号 [] 之间、用逗号分隔开的元素列表。列表可以嵌套

    append();
    insert();

    list1+list2;
    extend();

    del;

    pop;

    remove;

    clear;

    li1[3];

    index(‘abc’)

    count(‘abc’)

    in;

    list();
    cmp();
    len();max();min();
    sort();reverse();

    Tuple

    (元组)。序列

    不可变列表,只可访问

     

    del;

    tup1[0];

    index();

    count()

    in

    tuple();
    count();
    cmp();
    len();max();min();

    Dictionary

    (字典)

    字典是python中唯一的映射类型数据,key=>value,其中key值必须是不可变数据类型,并且唯一。形式储存数据,用{}包括内容

    dic1["m"] = "add";
    dic1.update(dic2)

    dic1.setdefault("k",'v')

    clear;

    pop;

    del;

    popitem

    dic1["m"]

    dic1.get()

    dic1.keys()

    dic1.values()

    dic1.items()

     

    type();len();cmp();
    copy();fromkeys()
    len();
    has_key();

    keys();values();items();
    get();setdefault();
    iterkeys();itervalues();

    iteritems();

    Set

    (集合)

    1.不同元素组成

    2.无序

    3.集合中的元素必须是不可变类型。
    4,{}

    add();update();

    remove();

    discard();

    pop();

    clear();

     

    issuperset();issubset();
    isdisjoint();

    intersection();union();

    difference();

    symmetric_diference()

          其他需要注意的要点:

          Number(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)Set(集合)数据类型扩展

          深浅copy与赋值

          python基本数据类型中,列表、元组、字符串属于序列,序列都可以进行的操作包括索引,切片,加,乘,检查成员。

          Number(数字):

      python3支持 int、float、bool、complex(复数),在pyhotn2.x中,还有长整形long    

          String(字符串):

          Python 使用反斜杠()转义特殊字符,如果不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。字符串连接中,除了可以用join()方法,还可以用  +  运算符连接在一起,此外用  *  运算符重复。

      三引号,‘’‘ ’‘’ 或者 “”“  ”“” ,可以实现字符串的多行定义、格式化输出等

          ‘’或者“”表示的是空字符串,判断的时候,对于任意的字符串,空字符串都在里面。即如果用in来判断的时候,空字符串in任意的字符串,结果都是True

          注意的是None表示的是一个空对象,而不是空字符串

     1 # !/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 str1 = 'abcdefg0101ABC字符串'
     5 str2 = '123.456'
     6 str3 = '	abc
    def'
     7 str4 = 'a{addmsg1}b{addmsg3}c{addmsg1}d{addmsg2}efg'
     8 # #------------主要的检测方法-----------------
     9 # print(str1.isalpha())    # 判断是否全都是字母
    10 # print(str1.isalnum())    # 判断是否只有字母和数字
    11 # print(str2.isnumeric())  # 检测字符串是否只由数字组成。这种方法是只针对unicode对象。
    12 # print(str2.isdigit())    # 检测是否只有数字组成
    13 # print(str2.isdecimal())  # 检测是否只由数字组成,包括汉字的数字、罗马数字。只针对unicode对象。
    14 # print(str1.isidentifier()) # 用来判断变量名是否合法
    15 # print(str1.islower())    # 检测是否全都是小写字母
    16 # print(str1.isupper())    # 检测是否全都是大写字母
    17 # print(str2.isprintable())  # 检测是否可打印,可判断包含转译字符。Unicode中“Other” “Separator”不可打印,不包括空格
    18 # print(str1.isspace())  # 检测是否仅有空格
    19 # print(str1.istitle())  # 检测是否是标题,首字母大写
    20 # print(str1.endswith("C"))  # 检测结束字符
    21 # print(str1.startswith("abc")) # 检测开始字符或字符串
    22 # #-----------主要的格式变化方法----------------
    23 # print(str1.strip())  # 去处多余字符,如空格、制表符、换行符,还可以制定字符内容
    24 # print(str1.lstrip())
    25 # print(str1.rstrip())
    26 
    27 
    28 # print(str1.split(" "))  # 用指定的字符划分,得到的结果存储在列表中,可指定最多的分组数
    29 # print(str1.rsplit())   # 从右侧开始划分
    30 # print(str1.partition("0")) # 分组,保留划分用的元素
    31 
    32 
    33 # print(str1.center(20,"*"))  # 指定最少占用的空间大小,对象放中间。超过不要紧,不够用指定字符填充
    34 # print(str1.ljust(20,'<'))  # 内容对象在左边
    35 # print(str1.rjust(20,'>')) # 内容对象在右边
    36 # print(str1.zfill(30))     # 内容对象在右边,不足的空间用0补充
    37 
    38 # print(str1.capitalize())   # 首字母大写,其他的英文小写
    39 # print(str1.upper())        # 所有的英文字母变大写
    40 # print(str1.lower())        # 所有的英文字母变小写
    41 # print(str1.casefold())     # 把包括英文字母在内的能变小写的字母都变小写,如法语/俄语等
    42 # print(str1.swapcase())     # 大写的小写,同时小写的变大写
    43 
    44 # print(str1.count("0"))       # 计数,也可以指定起止范围
    45 
    46 # print(str1.encode('utf-8'))   # 字符编码,很重要
    47 # print(str1.encode('utf-8').decode('utf-8'))   # 字符编码后解码
    48 
    49 # print(str3)
    50 # print(str3.expandtabs())                  # 把字符串中的 tab 符号('	')转为空格,tab 符号('	')默认的空格数是 8
    51 
    52 # print(str1.find("z"))        # 作用类似于index,但没有的时候返回-1
    53 # print(str1.index('z'))         # 返回指定字符串的索引,没有的时候,报错
    54 
    55 # print(str4.format(addmsg1='1#',addmsg2='2#',addmsg3='3#'))   # 根据锚点高效替换
    56 # print(str4.format_map({'addmsg1':'map1#','addmsg2':'map2#','addmsg3':'map3#'}))  # 根据锚点高效替换,键值对形式
    57 
    58 # print("*中*间*".join(str1))      # 用指定的字符串,把序列(包括字符串、列表等)的元素,拼接起来
    59 
    60 
    61 # screat1="abcdefg"               # 替换,加密
    62 # screat2="1234567"
    63 # transtab="".maketrans(screat1,screat2)
    64 # print(transtab)
    65 # print(str1.translate(transtab))
    66 
    67 # print(str1.replace('1','!'))      #替换
    68 
    69 
    70 
    71 list = ['123','试试','zhangsan']
    72 msg = input('>>').strip()
    73 print(msg)
    74 if msg=='':
    75     print('')
    76 for item in list:
    77     if msg in item:
    78         print(item)
    字符串操作示例

      

      格式化输出设置参考

      在对字符串中包括的数据进行类型判断时(主要是数字、字母,较为复杂的可考虑正则表达式)。常见的方法有:

      str.isalnum() 所有字符都是数字或字母

      str.isdigit() 所有字符都是数字

      str.isalpha() 所有字符都是字母

      str.islower() 所有字符都是小写

      str.isupper() 所有字符都是大写

      str.istitle() 所有单词都是首字母大写,像标题

      str.isspace() 所有字符都是空白字符或

          List(列表):

       可以实现存储较大量的信息,并且存储信息之间是相互独立的。

          查询速度随数据量增大而变慢,但运行过程节省内存空间,省资源。

      步长,取值的间隔长度。常见在循环语句、切片等操作。步长取正值,表示正向。步长取负值表示逆向取值,另外,也可以轻松实现反转。

      一些增删改查的例子:

      

     1 # !/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 # 定义列表
     5 li_1 = ['zhangsan','lisi','wangwu']
     6 
     7 
     8 
     9 # # 增
    10 # li_1.append('zhaoliu')
    11 # print("追加——》",li_1)
    12 #
    13 # li_1.insert(2,"insert2")
    14 # print("插入——》",li_1)
    15 #
    16 #
    17 # li_2 = ['打酱油2']
    18 # li_3=li_1+li_2
    19 # print('+'+'后的效果',li_1,'
    ',li_3)
    20 #
    21 # li_1.extend(li_2)
    22 # print("extend效果——》",li_1)
    23 
    24 
    25 #
    26 # li_1.pop()           # 如果不加参数,删除并返回最后一个值,用变量来接收的话,可理解为从管道中取值,当列表为空,报错
    27 # print(li_1)
    28 # li_1.pop(1)
    29 # print("pop上面未指定,这个指定——》",li_1)
    30 # li_1.remove(li_1[2])  # remove必须是列表中存在的元素,否则会报错
    31 # print("remove打酱油——》",li_1)
    32 
    33 #
    34 #
    35 #
    36 # del li_1[0]
    37 # print('del删了第一个',li_1)
    38 # del li_2
    39 # print(li_2)此时已经将li_2完全删除,再调用会报错
    40 #
    41 #
    42 #
    43 # # 改
    44 # li_1[1]='改动1'
    45 # print(li_1)
    46 #
    47 # # 查
    48 # print("查找例子1",li_3[0])
    49 # print("查找例子2",li_3.index('wangwu'))
    50 # print("查找例子3","打酱油2" in li_3 )
    51 # print(li_1.index("zhangsan"))      #查取索引,如果没有,报错
    52 # print(li_1.count("zhagnsan"))
    53 
    54 
    55 # #切片
    56 # print(li_1[1:2])
    57 # print(li_1[-2: ])
    58 # print(li_1[-2: :-1])
    59 
    60 # 反转
    61 # print(li_1[::-1])      # 只是实现了逆向输出,原列表实际排序不变
    62 # print(li_1)
    63 # li_1.reverse()         # 改变原列表的排序,直接反转
    64 # print(li_1)
    65 
    66 # # 排序
    67 # li_1.sort()      # 默认的是按照ascii码表排序,数字和字符串在python3.x中是不能同时排序的
    68 # print(li_1)
    69 
    70 
    71 # #--------------列表操作小结-----------------------
    72 # names=['金角大王','黑姑娘','rain','eva','狗蛋','银角大王','eva']
    73 # print('第2个eva索引:',names.index('eva',names.index('eva')+1))
    74 # re_names=names[::-1]
    75 # print("切片反转",re_names)
    76 # for i in range(len(names)):
    77 #     if i%2==1:
    78 #         print('打印索引为奇数的',names[i])
    79 # names[names.index('eva',names.index('eva')+1)]='EVA'
    80 # print('修改第2个eva为EVA',names)
    列表操作实例

          Tuple(元组):

          Dictionary(字典):

          字典的查找速度快尤其是在数据量大的情况下更为明显,但消耗内存大。简单点理解,主要是由于对key值进行了hash,并且存储的时候,对hash值进行了排序存在列表空间中。在查询过程中,对输入值进行hash以后,在存储hash的空间中进行快速查找。

      

          字典的遍历有两种常见方式,

    1 #方式一:
    2 for i in dic1:
    3     print(i)    #默认遍历key值
    4     print(dic1[i])
    5 
    6 #方式二:
    7 for i indic.items():
    8     print(i)    #相对相率低一些,优于先到后台将字典元素取出转化成列表,再遍历。
     1 # !/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # --------创建-----------
     4 dict1={'zhangsan':[11,'','1234abc']}
     5 dict2=dict(lisi=[12,'','1234abc'],wangwu=[13,'','1234abc'])
     6 dict3={}.fromkeys([i for i in range(10)],'0000')
     7 
     8 #print(dict1,'
    ',dict2,'
    ',dict3)
     9 
    10 # #-----------------增---------------------------
    11 # dict1['add01']="我是新来的"
    12 # print(dict1)
    13 # dict1.setdefault('add02','new02')
    14 # print(dict1)
    15 # dict1.setdefault("lisi",'try')
    16 # print(dict1)
    17 
    18 
    19 
    20 # #-----------------删---------------------------
    21 # del dict3[0]
    22 # print(dict3)
    23 # dict3.pop(1)
    24 # print(dict3)
    25 # dict3.popitem()
    26 # print(dict3)
    27 # dict3.clear()
    28 # print(dict3)
    29 # del dict3
    30 # print(dict3)
    31 
    32 
    33 ##-----------------改---------------------------
    34 # dict1.update(dict2)
    35 # print(dict1,"
    ",dict2)
    36 # dict3[1]='3#新来的'
    37 # print(dict3)
    38 
    39 #-----------------查---------------------------
    40 # print(dict3[4])
    41 # print(dict3.get(5))
    42 # print(dict3.get(100))
    43 # print(type(dict2.keys()))
    44 # print(dict2.values())
    45 # print(dict2.items())
    46 
    47 #-----------------遍历---------------------------
    48 for i in dict2:
    49     print(i)
    50 for i in dict2.keys():
    51     print(i)
    52 for i in dict2.values():
    53     print(i)
    54 for i in dict2.items():
    55     print(i)
    56 for k,v in dict2.items():
    57     print(k,v)
    字典操作示例

          Set(集合):

          set的元素必须是可以hash的数据类型,因为在set存储过程中会经过hash处理。

         元素必须是不可变的,列表、字典等不行 ,无序,并且不存在完全相同的元素(自动去重) 

     remove,pop和discard的区别:

          discard删除指定元素,当指定元素不存在时,不报错;

          remove删除指定元素,但当指定元素不存在时,报错:KeyError。

          pop删除任意元素,并可将移除的元素赋值给一个变量,不能指定元素移除。

     1 # !/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 # -------------创建---------------------
     4 set1=set([1,2,2,3,2,5,6])
     5 set2={1,3,2,3,7,9,11,12}           # 实际上生成的集合,已经将重复的删除了
     6 # -------------增---------------------
     7 # set1.add('add01')
     8 # print(set1)
     9 
    10 
    11 # -------------删---------------------
    12 # set1.discard(1)    # 删除指定的元素,如果没有当前元素,不作操作
    13 # print(set1)
    14 # set1.pop()
    15 # print(set1)
    16 # set1.remove(5)
    17 # print(set1)
    18 
    19 
    20 
    21 
    22 # -------------改---------------------
    23 
    24 # -------------查---------------------
    25 # print('a' in set1)
    26 
    27 # -------------关系运算-------------
    28 #---交差并补对称差集-----
    29 # print(set1 & set2)
    30 # print(set1 - set2)
    31 # print(set1 | set2)
    32 # print(set1 ^ set2)
    集合操作示例

          数据类型的扩展

    • 字节类型(bytes)
      • 是单独的数据类型

      

    • frozenset,冻结集合。
      • 通过方法frozenset()返回的冻结集合对象,为不可变数据类型

      

    •  切片
      • [起始索引:结束索引:步长   ] 
      • 顾头不顾尾
      • 步长为负数表示逆向
      • 字典不能哈希,所以不能进行切片操作

      

          深浅copy与赋值

          深浅拷贝现象的出现,主要源于存储的可变数据类型。

          首先了解下,

          A:可变数据类型,即在对变量内容进行操作时(增加、改动),a - 变量指向的内存地址不会发生变化,b - 变量指向的内存地址所存储的内容会相应更新。但是,在进行重新赋值时,即使是内容与之前存储ID地址所指向的内容一致,也会重新开辟新的id并存储响应的赋值。

          B:不可变,在变量的赋值被改变(增加、改动)时,实际上是发生了对变量的重新定义,具体的,a - 变量指向的内存地址会发生变化,b - 变量指向的内存地址存储的内容是新定义的内容。(注意,此时原来的内存地址如未被释放的话,会仍旧存放着之前的内容)。

    1.  Python中的变量的存储,
    2.  
    3.  
    4.  
    
    
  • 相关阅读:
    CSS 样式书写规范
    css等比例分割父级容器(完美三等分)
    右上角标的效果
    webstorm 激活破解方法大全
    ios开关按钮
    javascript功能封装
    Ajax 跨域
    javascript常用实例的实现与封装
    使用CSS完成元素居中的七种方法
    美化加载失败的图片
  • 原文地址:https://www.cnblogs.com/shengjie1/p/10759153.html
Copyright © 2011-2022 走看看