• Python 列表生成式,函数,字符串,文件操作,生成器


    知识点

    1 ==与is区别:Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)

    ==只比较值,而is比较身份标识也就是内存地址,而且在is比较中关于数据类型也就是只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False

    2 浅拷贝和深拷贝:需要使用copy模块

    • 浅拷贝:copy()方法实现

      1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
      2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间(地址不相同),里层的元素地址还是一样的),进行浅拷贝
      3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的(可变类型的原始对象变,拷贝对象变);改变原始对象中为不可变类型的元素的值,只有原始类型受影响。
      
    • 深拷贝:deepcopy()实现

      1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝)
      2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了
      

    3sep=" ",代表每个输出变量之间的方式可改为sep=" ",每行换行

    列表生成式

    • [x*x for x in range(1,11)]

      写列表生成式时,把要生成的元素x放在前面后面跟上for循环

      还可以在for之后加上if判断语句

    生成器(generator)

    一遍循环一边计算的机制称为生成器

    • 将列表生成式的[]改成(),就创建了一个生成器
    • 可用next(生成器的名字)获得下一个返回值
    g=(x*x for x in range (10))
    1.用next(g)打印出下一个元素知道出现StopIteration错误
    2.用for循环迭代输出
      for n in g:
           print(n)
       需要全部推算才能使用for迭代输出
    3.把print(b)改为yield b就成为生成器了
    def fib(max):                          
        n, a, b = 0, 0, 1
        while n < max: 
            print(b) 
            a, b = b, a + b
            n = n + 1 
        return 'done'
    
    def fib(max): 
        n, a, b = 0, 0, 1
        while n < max: 
            yield b 
            a, b = b, a + b
            n = n + 1 
        return 'done'
    

    字符串

    • capitalize() 把字符串的第一个字符改为大写

    • casefold() 把整个字符串的所有字符改为小写

    • center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串

    • count(sub[, start[, end]]) 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可

    • encode(encoding='utf-8', errors='strict') 以 encoding 指定的编码格式对字符串进行编码。

    • endswith(sub[, start[, end]]) 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。

    • expandtabs([tabsize=8]) 把字符串中的 tab 符号( )转换为空格,如不指定参数,默认的空格数是 tabsize=8

    • find(sub[, start[, end]]) 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。

    • index(sub[, start[, end]]) 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。

    • isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。

    • isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。

    • isdecimal() 如果字符串只包含十进制数字则返回 True,否则返回 False。

    • isdigit() 如果字符串只包含数字则返回 True,否则返回 False。

    • islower()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False

    • isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。

    • isspace() 如果字符串中只包含空格,则返回 True,否则返回 False。

    • istitle() 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False

    • isupper()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False

    • join(sub)以字符串作为分隔符,插入到 sub 中所有的字符之间。

    • ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。

    • lower()转换字符串中所有大写字符为小写。

    • lstrip()去掉字符串左边的所有空格

    • partition(sub)找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')

    • replace(old, new[, count])把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。

    • rfind(sub[, start[, end]])类似于 find() 方法,不过是从右边开始查找。

    • rindex(sub[, start[, end]])类似于 index() 方法,不过是从右边开始。

    • rjust(width)返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。

    • rpartition(sub)类似于 partition() 方法,不过是从右边开始查找。

    • rstrip()删除字符串末尾的空格。

    • split(sep=None, maxsplit=-1)不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔maxsplit 个子字符串,返回切片后的子字符串拼接的列表。

    • splitlines(([keepends]))在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。

    • startswith(prefix[, start[, end]])检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。

    • strip([chars])删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。

    • swapcase()翻转字符串中的大小写。

    • title()返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。

    • translate(table)根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。

    • upper()转换字符串中的所有小写字符为大写。

    • zfill(width)返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。

    函数

    • def 函数名(参数列表):

      ​ 函数体

    • Python有返回值,就返回返回值,没有就返回None

    • 关键字参数:出现在函数调用时:SaySome(words='让编程改变世界',name=‘小甲鱼’)

    • 默认参数:出现在函数创建时def SaySome(name='小甲鱼',words='让编程改变世界')

    • 可变参数:在形参前面加一个*号,意味着该参数可接受多个参数值,这些参数值以元组当成元祖传入,如果后面要跟其他形参责需要用默认参数。

    def test(*params,exp=8):
        print('参数长度是:',len(params),exp);
        print('第二个参数是:',params[1])
    

    文件操作

    • open(文件名(如果不在同一文件夹下,带上文件路径),文件打开模式)

    • 文件路径接受/或,但是用需要用来转义

      f=open('E:\test.txt')
      f.read()
      
    打开模式 执行操作
    'r' 以只读方式打开文件(默认)
    'w' 以写入的方式打开文件,会覆盖已存在的文件
    'x' 如果路径下已经存在相同的文件名,使用此模式打开将引发异常(以写入模式打开)
    'a' 以写入模式打开,如果文件存在,则在末尾追加写入
    'b' 以二进制模式打开文件
    't' 以文本模式打开(默认)
    '+' 可读写模式(可添加到其他模式中使用)
    'U' 通用换行符支持
    文件对象方法 执行操作
    f.close() 关闭文件
    f.read([size=-1]) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
    f.readline([size=-1]) 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
    f.write(str) 将字符串str写入文件
    f.writelines(seq) 向文件写入字符串序列seq(如:列表),seq应该是 一个返回字符串的可迭代对象
    f.seek(offset(偏移字节), from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
    f.tell() 返回当前在文件中的位置
    f.truncate([size=file.tell()]) 截取文件到size个字节,默认是截取到文件指针当前位置
    f.seek(0,0)  把指针拨到初始位置
    for each_line in f:
        print(esash_line)  可以一行一行打印
        
     f.write()   写入之前,保证用w或a方式打开文件,当字符串写入之后,应用f.close()关闭写入文件
    
    list(f)  将文件对象f中数据存入列表中
    
  • 相关阅读:
    Calendar日历类
    DateFormat类和SimpleDateFormat类
    Date时间类(java.util.Date)
    时间处理相关类
    不可变和可变字符序列使用陷阱
    String类
    搬圆桌问题
    重温经典之排序 java实现
    i++ 和 ++i
    Intellij Idea 使用技巧 updating
  • 原文地址:https://www.cnblogs.com/flhw/p/11142212.html
Copyright © 2020-2023  润新知