码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-06 13:02:44      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:内存   max   判断语句   深拷贝   space   expand   alpha   val   不可变类   

知识点

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="\n",每行换行

列表生成式

  • [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 符号(\t)转换为空格,如不指定参数,默认的空格数是 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中数据存入列表中

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

标签:内存   max   判断语句   深拷贝   space   expand   alpha   val   不可变类   

原文地址:https://www.cnblogs.com/flhw/p/11142212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!