• 某些运算符,可变基本数据类型/不可变基本数据类型, 自定义数据类型


    运算符

      Python中比较特别的

       幂3² 表示为 3**2 

      商的整数部分 例如10//3 = 3

      还有诸如“%=” “**=” “//=”

       逻辑运算“且,或,非”  : “and”  “or”  “not”

      判断元素是否在列表或字典中:  "in"  "not in"   

      判断数据类型“is” “not is”   例如: type("aaaa")  is str  为 True

    不可变基本数据类型 (不可变对象,创建对象时没有写类名,例如a=1,b="hello")

    int

      Python3 里面不论多大的数都是 int型      Python2 里面int存超了自动转为long

    float

      float是不可变对象

    字符串

      常用的方法,一些蛋疼的方法就不说了,翻翻笔记

    name = "al	Ex li"
    
    print(name.count("l"))   # 统计'l'的个数**************************************
    print(name.center(50, "-"))  # 把name放在50个“-”中间******************************
    print(name.find("l"))  # 找出第一个l的位置**************************************
    print(name.rfind("l"))  # 找出最后一个l的位置***********************************
    print(name[name.find("l"):])  # 字符串切片****************************************
    print(name.isdigit())  #  判断是否为整数******************************************
    print("+".join(['1', '2', '3']))  # 用+号将列表内的元素连接成一个字符串****************
    print("1+2+3".split("+"))    #  按+号将字符串分割成一个列表**************************
    print(name.strip())         # 去掉两边空格及换行符*******************************
    print(name.lstrip())        # 去掉左边空格及换行符*******************************
    print(name.rstrip())        # 去掉右边空格及换行符*******************************
    print(name.splitlines())    #  按换行来分割字符串变成列表类型,Windows跟Linux换行符不一样可以用一用

     字符串截取:

    name1 = ["a","b","c","d","e","f","g","h"] #列表等也可以同样的方法截取
    name = "abcdefgh"
    print(name[1:3]) #取出bc 顾首不顾尾 print(name[:3])# 省略0 取出前三个 abc print(name[-3:-1]) #从右往左取出fg print(name[-3:]) #省略0 取出后三个 fgh print(name[0:-1:2]) #隔两个取一个 0开头 -1结尾 2步长 aceg print(name[::3]) #从头到尾按步长3取出 adf

    布尔值

      True / False

    bytes

    Bytes 对象是由单个字节(8位,取值范围 0-255)作为基本元素组成的序列。例如:一个汉字用UTF8编码为3个bytes,两个汉字就是6个bytes。

    # 可以对bytes进行切片因为8位是基本单位:
    a = ''
    b = bytes(a, 'utf-8')
    print(b[:1])
    
    # 输出:b'xe5'

    bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定。

    ASCII 字符串,可以直接使用 b'xxxx' 赋值创建 bytes 实例,非 ASCII 编码的字符则不能通过b'xxxx'这种方式创建 bytes 实例

    a = ''
    b = bytes(a, 'utf-8')
    c = bytes(a, 'gb2312')
    d = b'http://www.ku.ac.cn'
    print(b)
    print(c)
    print(d)
    #用utf-8解码bytes,如果用b.decode('gbk')会报错:
    print(b.decode('utf-8'))
    
    # 输出:
    # b = b'xe5xbex90'
    # c = b'xd0xec'
    # d = b'http://www.ku.ac.cn'
    #  

      

      Python3中,默认是Unicode编码utf8解码。

    s = "你好"     #默认Unicode编码,utf-8解码
    
    s_to_unicode=?????   #无法实现,因为已经是Unicode
    
    s_to_gbk = s.encode("GBK")   #从Unicode直接变成gbk, bytes类型
    
    s_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")   # 或者  s_to_utf8 = s.encode("utf-8")

     

      Python2中,是操作系统默认编码(不写#-*- encoding:utf-8 -*-的话)

    s="你好"     # 默认操作系统编码gbk
    
    s_to_unicode = s.decode("GBK")          # 转成Unicode
    
    s_to_utf8 = s.decode("GBK").encode("utf8")      # 先转成Unicode才能转成utf8

    元祖

      names = ("a" , "b" , "c")

      只能读,不能删元素,修改,增加。 如果有一些数据希望程序启动后不能被修改,可以用元祖存放。

    可变基本数据类型 (可变对象,创建对象时也没有写类名,例如a=[1,2],b={1:'a',2:'b'})

    列表

      names = ["a" , "b" , "c",“d”,“e”,“f”,“g”,“h”] 

      切片:

    name = ["a","b","c","d","e","f","g","h"]
    print(name[1:3]) #取出b c 顾首不顾尾
    print(name[:3])# 省略0 取出前三个 a b c
    print(name[-3:-1]) #从右往左取出f g
    print(name[-3:])  #省略0 取出后三个 f g h
    print(name[0:-1:2]) #隔两个取一个 0开头 -1结尾  2步长
    print(name[::3])  #从头到尾按步长3取出

      追加: names. append ("g")

      插入:names . insert(1,"ccc") 在1的位置插入ccc

      删除: del  names[1]  或者 names.pop(1)

      找元素位置: names.index("b")

      找元素个数:names .count("d")

      列表反转顺序: names.reverse()  这个有什么卵用吗???

      排序:  names.sort()

      合并: names.extend(names1)

      复制:  列表里包含列表。 注意有浅复制和深复制。

        浅复制,name.copy() 复制列表内元素列表的指针,所以一改俱改。

        深复制,import copy    names2 = copy.deepcopy(name) 完全复制,改源列表元素不会影响复制后的列表

    字典

      用列表中包括列表,不能根据元素列表的某个值找到该元素列表的下标,可以用字典来解决。

      key为字符串,value为任意类型

      定义: info = {"key1":value1 , "key2":value2 , “key3”:value3 }

      增: info["key4"] = value4

      删: del info["key4"]  或 info.pop("key4")

      改: info["key4"] = values

      查: info["key1"]  确定有key1才用    

         info.get("key1") 有就返回value1没有返回none

      其他方法:  info.values() ,返回所有的values

            info.keys()  返回所有keys

            info.setdefault(“key”,value)  添加一个新值,返回value,key重复则不修改旧值,返回旧value

            info. update(b) 把b字典合并到info里面,如果有key重复的更新value,不重复的合并

            info.items()把字典转换成列表,key为第一个元素

            dict.formkeys([6,7,8] , "test")

              相当于{ 8:'test" , 6:"test" , 7:"test"} 3个key共享一个内存地址,如果“test”为列表或字典的话,也是一改俱改

    集合

    • 初始化

          list = [ 1, 2,3,4,5 ]

          set1 = set ( list )

    • 集合的逻辑关系

            

        求交集: set3 = set1.intersection(set2)  或者  set3 = set1 & set2

        求并集:set1.union(set2)  或者 set1 | set2

        求差集:set6 = set1.difference(set2)  或者  set6 = set1 - set2

            set5 = set2.difference(set1) 或者   set5 = set2 - set1

        求对称差集: set5 + set6 = set1.symmetric_difference(set2)   或者  set5+set6 = set1 ^ set2

        判断a是不是b的子集:a.issubset(b)   或者是判断b是不是a的父集, b.issuperset(a)

        判断ab是否有交集: a.isdisjoint(b)  无交集返回TRUE 有交集返回FALSE

    • 集合的方法

        长度:len(set)   ,  判断元素是否在set里:x in set , 浅复制:set.copy()

        增:set.add("aaaa")

          set.update( [1,2,3,4,5] )

        删:set.remove("aaa")  没有aaa报错  ,    set.discard("aaa")   没有aaa返回none

        很神奇 ,  没有改和查。。看来是不能直接在集合里改和查

    自定义数据类型

  • 相关阅读:
    [luogu p1996] 约瑟夫问题
    [luogu p1098] 字符串的展开
    [luogu p1035] 级数求和
    [luogu p1004] 方格取数
    [luogu p3383]【模板】线性筛素数
    [luogu p1223] 排队接水
    [luogu p1002] 过河卒
    [luogu p1001] A+B Problem
    Java BIO/NIO(Non-blocking I/O)详解
    Linux页框&伙伴算法以及slab机制
  • 原文地址:https://www.cnblogs.com/revo/p/7137603.html
Copyright © 2020-2023  润新知