zoukankan      html  css  js  c++  java
  • python: 基本数据类型 与 内置函数 知识整理

    列表

    list.append(val)    #末尾追加,直接改变无返回
    list.inert(2,val)     #插入到指定位置 
    
    list.extend(mylist1)  #list会被改变
    list2=list+list1   #产生新的,原有的不改变
    
    del list[1]  #根据索引删除
    del list[:]     #删除全部
    list.clear()  #清除原列表所有元素
    
    list.remove("value")   #根据元素删除,注意只能删除从左边找到的第一个
    list.pop()      #传入索引删除默认删除最后一个元素,也可以传入索引值删除指定位置
    
    list.copy()    #返回一个新列表
    list[:]       #返回一个新列表
    
    list.reverse()  #将原列表翻转
    mylist[::-1]    #产生一个新的翻转列表
    
    val in  list    #判断value是否存在于list中
    mylist.index(val)   #返回从左边第一个找到val元素的下标,若列表不存在该元素,则报错
    list.count(val)  #返回val在列表中的数目

    扩展:双重循环列表解析式

    [ j for i in con for j in i if j.isdigit() ]  
    print ("
    ".join("	".join(["%s*%s=%s" %(x,y,x*y) for y in range(1, x+1)]) for x in range(1, 10))) #一行打印出99乘法表

    元组
    索引、切片、循环、长度、包含(in)、count、index
    引伸知识:切片
    切片访问一个范围,切片的三个数可为负。也可为空,第一个数为空为最开头,第二个数表示
    注意:切片切的时候会产生新的列表,但是新列表里面的元素地址和旧列表相同

    字典

    #单个元素的增删改查都可以利用索引完成
    dict()    #全局工厂方法,接收列表做参数,该列表包含n个元组,元组包含键值对。例如:d=dict([(1,"d"),(2,'www')])-->{1:"d",2:'www'}。所以常用zip方法辅助产生。
    dict.fromkeys(list,val)  #批量初始化一些键,并初始化为统一的默认值,例如dict.fromkeys([1,2,3],'testd') {1: 'testd', 2: 'testd', 3: 'testd'}
     #注意:当fromkeys第二个是可变对象时,意味着所以键都指向这个可变对象,所以不能使用这个方法创建值为列表的字典 。禁止mydict = dict.fromkeys(['k1', 'k2'], [])
    
    mydict.setdefault(key,val)   #key存在,不赋值,返回的是key对应的已有的值。key不存在,赋值,返回的则是要设置的默认值。某种情况下可以减少赋值次数
    mydict.pop(key)  #删除元素
    
    mydict.update(b)   #b = {1:2,3:4, "stu1102":"龙泽萝拉"}批量更新,当多于一个键时使用
    
    mydict.items()  #返回元素为键值对元组的列表
    mydict.keys()   #返回一键列表
    mydict.values()   #返回一值列表

    集合Set
    无序,元素唯一且为不可变类型
    有两种集合,set({1,2,3}) 和 {1,2,4}创建的为可变类型
    而使用frozenset({1,2,3})创建的为不可变类型,可以将其看作一个排他性的元组
    若仅仅去重操作,而不在意元素的本身的顺序,则放心地用吧

    myset.add(xx)   #增加元素
    myset.update(序列) #将序列拆成子元素,装入,值得注意的是,可以传入字符串
    
    myset.pop()   #随机删除,基本不用
    myset.remove(xx)   #删除不存在会报错
    myset.discard(xx)   #删除,即使不存在,也不会报错
    
    val in set     #判断元素是否存在
    
    s1.issubset(s2)   #s1是s2的子集吗?
    s2.issuperset(s1)   #s2是s1的父集吗?
    
    |   #合集
    &    #交集 注意,这个的对立面试^,对称差集 
    -    #差集
    ^    #对称差集
    >,>=    #父集
    <,<= #子集

    字符串
    b'str'型字符串:byte类型
      字节类型,也就是说本身就是个二进制,只不过python人性地根据ascii转化为人性可读
      数据基于网络传输或内存变量存储到硬盘时需要转成bytes类型,但此类字符串只能存储ascall码字符
    r'str'型字符串:原始原始字符
      对字符串内容不做任何转义

    #str为一个字符串,sub为str的一个子字符串。s为一个序列,它的元素都是字符串。width为一个整数,用于说明新生成字符串的宽度。
    
    str.count(sub) 返回:sub在str中出现的次数
    str.find(sub) 返回:从左开始,查找sub在str中第一次出现的位置。如果str中不包含sub,返回 -1
    str.index(sub) 返回:从左开始,查找sub在str中第一次出现的位置。如果str中不包含sub,举出错误
    
    str.rfind(sub) 返回:从右开始,查找sub在str中第一次出现的位置。如果str中不包含sub,返回 -1
    str.rindex(sub) 返回:从右开始,查找sub在str中第一次出现的位置。如果str中不包含sub,举出错误
    
    str.isalnum() 返回:True, 如果所有的字符都是字母或数字
    str.isalpha() 返回:True,如果所有的字符都是字母
    str.isdigit() 返回:True,如果所有的字符都是数字
    str.istitle() 返回:True,如果所有的词的首字母都是大写
    str.isspace() 返回:True,如果所有的字符都是空格
    str.islower() 返回:True,如果所有的字符都是小写字母
    str.isupper() 返回:True,如果所有的字符都是大写字母
    
    str.split([sep, [max]]) 返回:从左开始,以空格为分割符(separator),将str分割为多个子字符串,总共分割max次。将所得的子字符串放在一个表中返回。可以str.split(',')的方式使用逗号或者其它分割符
    str.rsplit([sep, [max]]) 返回:从右开始,以空格为分割符(separator),将str分割为多个子字符串,总共分割max次。将所得的子字符串放在一个表中返回。可以str.rsplit(',')的方式使用逗号或者其它分割符
    
    str.join(s) 返回:将s中的元素,以str为分割符,合并成为一个字符串。join只能连接元素为字符串的列表 ,也就说可以接收生成器
    
    str.strip([sub]) 返回:去掉字符串开头和结尾的空格。也可以提供参数sub,去掉位于字符串开头和结尾的sub
    
    str.replace(sub, new_sub) 返回:用一个新的字符串new_sub替换str中的sub
    str.capitalize() 返回:将str第一个字母大写
    str.lower() 返回:将str全部字母改为小写
    str.upper() 返回:将str全部字母改为大写
    str.swapcase() 返回:将str大写字母改为小写,小写改为大写
    str.title() 返回:将str的每个词(以空格分隔)的首字母大写
    
    str.center(width) 返回:长度为width的字符串,将原字符串放入该字符串中心,其它空余位置为空格。
    str.ljust(width) 返回:长度为width的字符串,将原字符串左对齐放入该字符串,其它空余位置为空格。
    str.rjust(width) 返回:长度为width的字符串,将原字符串右对齐放入该字符串,其它空余位置为空格。

    数字类型
    对于小数取位数时常用有。round(num,小数位)、math.floor 和 math.ceil

    文件

    1、刚调用f.write不会马上写到文件中,因为写入的内容都在内存(缓冲区中),需要调用f.flush()冲出来
    2、在windows中换行是 ,但是python中文件处理会统一为 ,如果不需要,则在open('xx.txt','r',newline='')
    3、file.read(4)可以传入参数,表示要去读取的字符个数,如果是b模式,则是字节数
    4、文件截断:f.truncate(10) #表示文件从开头的十个位置,后面的都不要了,常用于‘r+’的重新写入
    5、truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,常见于 在r+模式下重写文件f.truncate(0)
    5、写文件时候注意打开方式,什么+都行,就是w+不行。因为w+模式会把原来的内容清空
    6、f.seek方法,移动的是字节数
    7、f.readlines可以返回一个以换行为分隔的列表,(读取最后一行的时候,这个方法可以配合f.seek(x,2)利用)
    8、f.write和writelines的区别,前者参数为字符串,后者为序列
    9、同时用with语句打开两个文件:with open('f1.txt','r')as f1,open('f2.txt','w') as f2: 注意的是第二个open没有with
    10、open函数,会查询系统的默认编码,作为打开文件时解码
    可以传入encoding参数,例如,f=open('sss.txt','r+',encoding='utf-8'),这是因为每个文件的编码格式都有可能不一样,这个参数可以确保其用utf-8解码至Unicode.
    当若以b模式打开,则不能使用encoding函数,因为读出来就是源生二进制,不会做任何转换
    11、文件操作,使用for line in file 等迭代操作时,不能使用file.tell()。使用file.readline()则可以
    12、使用file.readline判断文件结尾,
      temp=f.tell()
      f.seek(0,2) == temp

    内置函数

    以下为常用,更加详细点击这里

    abs(x) 绝对值
    divmod(a, b) 分别取商和余数,注意:整型、浮点型都可以
    int([x[, base]])  将一个字符转换为int类型,base表示进制
    int('0b010010',base=2) 表示以二进制识别字符串并把其转化为十进制
    float([x]) 将一个字符串或数转换为浮点数。如果无参数将返回0.0
    bool([x]) 将x转换为Boolean类型
    dict([arg])

    字典工厂方法

    用法1:
    conn_dict=dict(
    host='localhost',
    user='root',
    password='Yiyidongwang13@',
    database = 'my_pratice'
    )

    用法2:
    d = dict([('a':1),('b':2)])
    #d={'a':1,'b':2}


    用法3(合并字典,替代update,update会改变原有字典),不过只适用于键值为字符串的
    dict1 = {'a': 1, 'b': 2, 'c': 3}
    dict2 = {'d': 4, 'f': 5, 'g': 6}
    merged_dict = dict(dict1, **dict2)


    list([iterable])  将一个集合类转换为另外一个集合类
    可传入生成器参数
    set() 集合工厂方法
    frozenset() 冷冻集合工厂方法
    str([object])  字符串工厂方法
    tuple([iterable])  元组工厂方法
    pow(x, y[, z])  返回x的y次幂,即x**y
    round(x[, n])  四舍五入
    sum(iterable[, start])  对集合求和
    oct(x) 将一个数字转化为8进制
    hex(x) 将整数x转换为16进制字符串
    chr(i) 返回整数i对应的ASCII字符 
    ord('A') -->65, chr(65)-->'A'
    bin(x) 将整数x转换为二进制字符串
    format(value [, format_spec]) 1)除了字符串的format函数之外,还有一个内置函数format可以将数字格式化指定格式字符串,例如format(3,'b') #转换成二进制 '11'

    扩展:附上字符串的
    2)格式化字符串,格式化的参数顺序从0开始,如“I am {0},I like {1}”

    · 普通用法
    '{1} love {0}'.format('sss','ziyi')
    · 取子列表项
    '{1[2]} love me {0[0]}'.format([1,2,3],[2,34,5])
    Out[40]: '5 love me 1'
    · 传入字典,字符串个格式 也要变
    '{name} is {age} now'.format(name='ziyi',age=17)

       
    zip([iterable, ...])  要求参数为长度相同的列表,各取一个元素打包为元组,在拼成列表 
    a = [1,2,3]
    b = [4,5,6]
    zip(a,b)-->[(1, 4), (2, 5), (3, 6)]
    sum(iterable[, start]) 对集合求和
    max(iterable[, args...][key])  返回集合中的最大值
    min(iterable[, args...][key]) 返回集合中的最小值
    sorted(iterable[, cmp[, key[, reverse]]])  队集合排序
    reduce(function, iterable[, initializer])  python3没有该函数,需要导入functools
    类似于int sum = accumulate(va.begin(), va.end(), 0, [](int a,int b) {return a*10 + b; });
    叠加集合函数,传入的函数需要得具备两个参数
    filter(function, iterable) 构造一个序列,等价于[ item for item in iterable if function(item)]
    1、参数function:返回值为True或False的函数,可以为None
    2、参数iterable:序列或可迭代对象
    map(function, iterable, ...)  遍历每个元素,执行function操作,相当于C++的each
    map函数返回的结果是,由lambda 返回的值(原列表一个元素,lambda执行一次),组成的一个新列表
       
    iter(o[, sentinel]) 1)返回一个对象的迭代器
    2)iter()可将函数转化为迭代器,可以令函数一直执行直到某种条件终止。

    例如:li=[1,2,3,4,5,6]
    def test():
      return li.pop()
    myiter = iter(test,3) #一直执行test函数,一直到返回值为3就终止的迭代器。
    这个原理在socket编程时有妙用: msg=''.join(partial(conn.recv,1024),b'')  

    enumerate(sequence [, start = 0]) 返回一个枚举生成器,下标0开始
       
    all(iterable) 1、集合中的元素都为真的时候为真
    2、特别的,若为空串返回为True
    any(iterable) 1、集合中的元素有一个为真的时候为真
    2、特别的,若为空串返回为False
    cmp(x, y) 如果x < y ,返回负数;x == y, 返回0;x > y,返回正数
    对比 1 and 0 or 2 返回 True 因为1and0 返回false,False or 2返回True
       
    globals() 返回一个描述当前全局符号表的字典
    loacals() 返回当前可见的变量列表
    vars() 和dir方法类似,dir的是属性列表,这个是属性字典
    dir() 1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
    2、带参数时,返回参数的属性、方法列表。
    3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
    4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息
       
    callable(object) 检查对象object是否可调用
    isinstance(object, classinfo) 判断object是否是class的实例
    issubclass(class, classinfo) 判断是否是子类
       
    eval(expression [, globals [, locals]])  将字符串按照python语法规则转化为代码执行
    exec  类似于eval,但是没有返回值
    可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中
    exec:三个参数
    参数一:字符串形式的命令
    参数二:全局作用域(字典形式),如果不指定,默认为globals()
    参数三:局部作用域(字典形式),如果不指定,默认为locals()

    g={
        'x':1,
        'y':2
    }
    l={}
    
    exec('''
    global x,z
    x=100
    z=200
    
    m=300
    ''',g,l)
    
    print(g) #{'x': 100, 'y': 2,'z':200,......}
    print(l) #{'m': 300}
       
    hash(object) 如果对象object为哈希表类型,返回对象object的哈希值
    id  内存地址  
    type  对象类型
    print

    print(' %s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')

    %-50s 代表字符串总长为50,传入的字符往左写,右边用空格。
    print(('[%%-%ds]' %500) %'###')   

  • 相关阅读:
    JavaScript学习笔记(六)——Map、Set与iterable
    JavaScript学习笔记(五)——条件判断与循环
    JavaScript学习笔记(四)——对象
    JavaScript学习笔记(三)——数组
    抽象代数 第三章 群
    进栈序列为(1,2,3..,n)有多少种出栈顺序
    Win10 快捷键
    主项定理Master Method
    算法导论笔记 第三十章 多项式与快速傅里叶变化
    算法导论笔记 第二十九章 线性规划
  • 原文地址:https://www.cnblogs.com/ziyide/p/9096344.html
Copyright © 2011-2022 走看看