Python 一些程序

break:while循环break是用于永久终止循环。即不执行本次循环中break后面的语句,直接跳出循环。

切片中: find  , rfind,index , rindex

find , index : index找不到会报错 find 返回-1

find,rfind :find从左到右 ,rfind 右侧查找

s[start:end:step]

判断 :startswith ,endswith ,isalpha ,isdigit ,isalnum,isspace,isupper,islower,

s.startswith(' '): 判断是否以此开头 true or false

s.isalpha():纯字母判断 

s.isalnum():是否字母数字组合

s.isspace():纯空格  一定要有空格

替换:replace(old,new,count)默认全部替换,通过count指定次数,多个情况 正则表达式 for循环用处:违规词汇

s.replace('目标字符串','替换字符串',1):替换一个目标字符串

切割字符串:split(‘分隔符’,maxsplit),rsplit 从右 ,splitlines(),

s.split(' ') :遇到空格切一刀 ,返回一个列表 

s.splitlines():按行切割,不用分隔符

s.title():每个单词首字母都大写

s.upper() 

s.lower()

s.capitalize() :一句话的首字母大写

空格处理:strip(),lstrip()只去掉左侧空格 ,rstrip() 删除空格

ljust,rjust,center 添加空格控制字符串的对齐方式

拼接 :join(列表拼接) ['','','',''].join

s.strip():去除左右两侧空格

s.center(30) :在30个字符串正中央位置

s.ljust(30):左对齐

s.rjust(30):右对齐

格式化 :format

'美女{}今年{}岁'.format(name,age)

'美女{0}今年{1}岁,我也是{1}岁'.format(name,age)  :使用数字填充,从0计数

'美女{name}今年{age}岁,我也是{age}岁'.format(name='z',age=19):变量名的形式,format的参数必须是关键字参数

列表拼接:append,extend

  • append()添加的时候会把添加的数据当成一个整体进行添加,允许添加任意类型的数据
  • extend()添加的时候会把添加的数据迭代进行添加,只允许添加可迭代对象数据

删除:pop remove clear

pop(index) 或者 pop():从后往前删除一个

remove('value'):只删除从做左到右第一个元素

删除多个元素:

n=0

while n<len(list1):

    if list1[n]=='酸奶':

        list1.remove('酸奶')

    else:
        
        n+=1

n只有不删除动作的时候往后移,删除之后同一下标内容会变化,所以删除时让n不动

  第二种做法 将不是1的内容添加到空列表中,不使用删除做法

elem=1
result=[]
for i in li:
    if i!=elem:
        result.append(i)
li=result
print(li)

第三种做法倒着删除,就不会出错 

for i in li[::-1]:

        if i =='suannai':

                li.remove(i)

s.clear():清空所有元素,空列表

修改:insert插入,不完全修改,类似添加

s.insert(index位置,对象元素)

查找:s.count(元素):返回这个元素出现个数

del list[index] 与pop一样

del list :会直接删除list变量,删除的是变量不是内容 第44节课

交叉赋值:a,b=b,a

冒泡排序:sort 功能

for j range(0,len(nums)-1):
    for i range(0,len(nums)-1-j: #选最大的放在最后
        if nums[i] > nums[i+1]: #两两比较
            a=nums[i]
            nums[i]=nums[i+1]
            nums[i+1]=a

元组:(‘aa’,)一定加逗号,不然就是字符串 ,不能增删改 ,能查

s.index('a',startindex,endindex) :从开始坐标寻找a

s.count(元素)计数

字典 清空:b.clear()

b.pop(​​​​​​ key)  :返回的是value 删除的是键值对

b.popitem():返回最后一个键值对,不需要传参,删除最后一个键值对,如果空的话会异常

del b[key] :类似pop(key)

遍历

book.get(key):得到对应的value

book.get(key,返回值):如果找不到返回设定的返回值

book[key]:同上,区别:get不会出现异常

book.items() :一对一对放在元组里

for k,v in book.items():
    print(k,v)

book.setdefault(‘key’,‘value’):类似添加 少 但不能修改使用

book.update(dict1) :将两个字典合并

book.fromkeys(['a','b'],[10,1]):创建一个新字典

练习:

books=[] #[{},{}]  #列表里面是字典
while True:
    if len(books)==3:
        break
    name=input("输入书名")
    for book in books:
        if name==book.get('name'):   #不能value用in
            print('书名重复')
            break
        else:
            author=input(“输出作者”)
            price=float(input("输入价格”))
            books=append({'name':name,'author':author,'price':'price})

 集合 :不成对出现就是集合,集合没有下标,无序

{1,2,3,4}

空集合设置:set()  ;c={}是空列表

set.add(value):添加

set.update(set1):添加

set.remove(value)

set.discard(value) 都能删 ,区别:删不存在的可以不会报错

set.pop():随机删除一个元素

c=set2&set3 :交集

set2|set3:并集

set2-set3:差集

sorted(元素):排序

列表推导式:[返回值 for i in 可迭代]

[返回值 for i in 可迭代 if 条件]

[返回值 if 条件 else for i in 可迭代]

isinstance(x,list) :返回true or false

函数嵌套

闭9包:1嵌套函数,2内部函数引用了外部函数的变量(只能引用,不能修改) 3.返回值是内部函数

装饰器

高阶函数:

list=[(a,25),(b,30)]

 max(list,key=lambda x:x[1])

sorted同理

filter(条件,对象) :filter(lambda x:x[1]>20,list) 扔到list里面就能看到结果

map():map(lambda x:x[1]+1,list)将list 映射出来

reduce : reduce(lambda x,y:x+y,[1,2,3]) 必须有两个参数累加求和

zip():

>>>a = [1,2,3]

>>> b = [4,5,6]

>>> c = [4,5,6,7,8]

>>> zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)]

>>> zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)]

>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)]
文件open操作

r:read 读 write 写

rb:b二进制字节 什么文件都可以 纯文本,音乐,电影rb

wb:同

文件上传、文件下载:

stream=open(r'绝对路径') :默认rt读文本文件读不了doc其他文件。找不到会报错

content=stream.read();print(content)

result=stream.readable():判断是否可读,返回true

while True:

        line=stream.readline()

        print(line)

        if not line:

                break

lines=stream.readlines() :保存到列表中

for i in lines:

        print(i)

:stream=open(r'绝对路径','w'):会清除原来的内容

stream.write(字符串)

stream.close()

stream.writelines(内容):不换行,自己加\n

mode='a':不会清空原来的内容

文件复制:只能一个具体文件不能复制文件夹 os模块可以

stream=open(r'路径','rb')

with open(r'路径','rb') as stream: (with 结合open使用,可以帮助我们自动释放资源)

        container=stream.read() 读取文件

        with open(r'路径','wb') as wstream:

                wstream.write(container)

os:相对路径常用从所在文件地址出发同级的 直接输入隔壁文件夹名以及后面的

../返回上级

os.path.dirname(__file__):定位到当前文件所在文件夹的路径

os.path.abspath(相对路径):通过相对路径找绝对路径

os.path.abspath(__file__):当前文件的绝对路径,得打印出来

os.getwd():当前文件所在文件夹的路径

result=os.path.split(path):将文件夹和文件路径分隔开,放到元组里

result=os.path.splitext(path) :将扩展名分隔开,放在元祖里

os.path.getsize(path):获取文件大小

os.path.join('文件名):拼接成路径

os.listdir(r'文件夹地址'):返回文件夹下所有的文件名字,保存到列表中

os.mkdir(r'地址\文件夹名字):在地址下创建新的文件夹

os.path.exists(r'地址\文件夹名字):判断这个文件夹是否存在

if not os.path.exists(r'地址\文件夹名字):

        r=os.mkdir(r'地址\文件夹名字)

        print(r)

os.rmdir(r'地址\文件夹名字):只能删除空的文件夹

os.remove(r'文件绝对路径'):删除文件 

path=r'文件夹路径

filelist=os.listdir(path) :获取当前文件夹的所有文件名字,放在列表中

for file in filelist:

        path=os.path.join(path.file)

        os.remove(path)

else:

        os.rmdir(path)

切换目录 os.chdir(r'目录) :切换到要求的目录

复制文件夹 

def copy(src,target):

        if os.path.isdir(src) and os.path.isdir(target): 是否是文件夹    

                filelist=os.listdir(src)

                for file in filelist:

                        path=os.path.join(src,file)

                        with open(path,'rb') as rstream:

                                container=rstream.read()

                                path=os.path.join(target,file)

                                with open(path,'wb') as wstream:

                                        wstream.write(container)

                else:

                        print('完毕')

copy(scr_path,target_path) :自己定义文件夹地址

try:

pass

except Exception as err:

        print(err)

try:

        pass

except:

        pass

finally:

        stream.close() 释放资源无论错没错

抛出异常:主动报错raise Exeption('提示')

列表推导式:[表达式 for 变量 in 旧列表] [表达式 for 变量 in 旧列表 if 条件]

[(x,y) for x in range(5) if x%2==0 for y in range(10) if y%2!==0] 外层循环套用内层循环

[表达式 if 条件 else 另一个表达式 for 变量 in 旧列表 if 条件]

集合推导式:{}返回无重复的集合

字典推导式:{value:key for key,value in dict.items()} 字典键值对交换

生成器:generator

1.通过列表推导式得到生成器

g=(x*3 for x in range(20))

print(g.__next__())  一个一个得出 

print(next(g)) 每调用一次next就会产生一个元素,超过范围会报错用try ,except

只要函数中出现yield关键字,说明就不是函数了是生成器

例子:
def func():
    n=0
    while True:
        n+=1
        yield n
g=func()
print(g)

   print(next(g))           

def g():
    i=0
    while i<5:
        temp=yield i
        print('temp:',temp) #return 0 暂停
        i+=1
    return '没有更多数据'
g=gen()
print(g.send(None)) 第一次必须先空值None 通过send改变temp的值
print(next(g))
n1=g.send('呵呵')
print('n1:',n1)
g.send('haha')

进程,线程,协程9

def task1(n):
    for i in range(n):
        print('正在搬第{}砖'.format(i))
        yield None #暂停功能
def task2(n):
    for i in range(n):
        print('正在听第{}首个'.format(i))
        yield None
#做到任务交替

g1=task1(10)
g2=task2(5)
while True:
    try:
        g1.__next__()
        g2.__next__()
    except:
        break

可迭代的对象:isinstance()

from collections import Iterable 
list=[1,2,3]
f=isinstance(list1,Iterable)
print(f)

可迭代的是否是迭代器?生成器是可迭代的,也是迭代器,list是可迭代的,但不是迭代器

list1=[1,2,3]
list1=iter(list1)
print(next(list1))
print(next(list1)) #借助iter转换可以转换成迭代器

面向对象:

class Phone:
    brand='huawei'
yp=Phone()
print(yp)
print(yp.brand)
yp.brand='iphone'
print(yp.brand) #先找自己空间的,然后去模型中找

feifei=Phone()
print(feifei)

1.定义类

2.使用类,创建对象

类里面的函数

class Phone:
    brand=''
    def call(self):
        print('self---')
phone1=Phone()
phone1.call()

self穿的是自身 比如phone1调用时自己

类方法(加入装饰器)不需要self

定义需要依赖装饰器@classmethod

类方法中参数不是一个对象,而是类

类方法中只可以使用类属性

类方法的作用:不依赖对象self才能做到动作

静态方法:很类似类方法

1.需要装饰器@staticmethod

2.静态方法是无需传递参数(cls,self)

3.也只能访问类的属性和方法,对象的是无法访问的

4.加载时机同类方法

正则表达式

match 只从头开始匹配

search 遇到合适的就匹配,只匹配开始的一次

findall 匹配所有的符合要求的

$ 一直到结尾也是符合要求的

{2,5} 正则 次数 2-5个

[ ]字符串范围

\d :[0:9]

\D:[^\d] ^出现在【】里为非 ,在外面表示开始

\s:空白字符

\S:非空白

\w:任意字母数字及下划线

\W:非任意字母数字及下划线

\b:一个单词的边界  

*:\geq0

?:=0或者1

+:\geq1

使用贪婪非贪婪在+/*/?后面加?

                                       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值