#1、打乱list元素
import random
def shuffle_list(ls):
n=len(ls)
for i in range(n-1,0,-1):
j=random.randint(0,i)
ls[i],ls[j]=ls[j],ls[i]
print(i,j,sep=',')
return ls
lst=[1,3,6,8,9,0,2]
#random.shuffle(lst) #标准库提供的直接打乱列表的方法,使用了Fisher-Yates洗牌算法
print(shuffle_list(lst))
#2、产生10等差为10的等差数列
print([x*10 for x in range(10)
#3、list去重和获得相同和不同元素
l1=[1,2,3,2]
l2=[3,4,5,5]
set1=set(l1) #元素去重可以使用set 可以使用l3=lsit(set(l1)),得到去重后list
set2=set(l2)
print(f'相同元素:{set1&set2}\n不同元素: {set1^set2}')
#100以内数字求和
print(sum(range(1,101)))
from functools import reduce
print(reduce(lambda x,y:x+y,range(1,101)))
la=[1,2,3,4,5,6,7]
#删除元素
lb=filter(lambda x:x>5,la)
print(list(lb))
2、字典操作
python复制代码
#排序
da={'a':3,'c':2,'d':1}
print(sorted(da.items(),key= lambda x:x[1])) #[('d', 1), ('c', 2), ('a', 3)]
print(sorted(da.items(),key= lambda x:x[0])) #[('a', 3), ('c', 2), ('d', 1)]
print(sorted(da.items(),key= lambda x:x[0],reverse=True)) #[('d', 1), ('c', 2), ('a', 3)]
#字典处理
s='k:1|k1:2|k2:3|k3:4'
def str2dic(s):
dic={}
for it in s.split('|'):
key,value=it.split(':')
dic[key]=value
return dic
#字典推导式
#d={k:int(v) for t in s.split("|") for k,v in (t.split(':'),)}
print(str2dic(s)) #{'k': '1', 'k1': '2', 'k2': '3', 'k3': '4'}
3、单例模式
python复制代码
#单例模式,装饰模式实现
def singleton(cls):
instance={}
def get_instance(*args,**kwargs):
if cls not in instance:
instance[cls]=cls(*args,**kwargs)
return instance[cls]
return get_instance
@singleton
class MySingleton:
def __init__(self):
pass
f1=MySingleton()
f2=MySingleton()
print(f1 is f2)
#使用基类, 继承object的类都是新式类
class Singletion(object):
def __new__(cls,*args,**kwargs):
'''
hasattr是Python中的一个内置函数,它用于检查对象是否具有指定的属性。
如果对象具有该属性(无论是否可调用),则返回True,否则返回False。
'''
if not hasattr(cls,'_instance'):
cls._instance=super(Singletion,cls).__new__(cls,*args,**kwargs)
return cls._instance
class Fo(Singletion):
pass
fo1=Fo()
fo2=Fo()
print(fo1 is fo2) #True
4、遍历目录,过滤出所有.py文件
python复制代码
#遍历目录,过滤出所有.py文件
import os
def read_files(dir,suffix):
#res=[]
for root,dirs,files in os.walk(dir):
for file_name in files:
name,suf=os.path.splitext(file_name) #分离文件名与扩展名
if suf==suffix:
print(file_name)
read_files('../','.py')
#第二种方式
def pick(obj):
if obj.endswith(".py"):
print(obj)
def scan_path(ph):
file_list = os.listdir(ph)
for obj in file_list:
if os.path.isfile(obj):
pick(obj)
elif os.path.isdir(obj):
scan_path(obj)
if __name__=='__main__':
scan_path('./')
5、统计文本中出现前3的单词
python复制代码
#统计文本单词频率最高的单词
import re
from collections import Counter
def check(path):
with open(path) as f:
return list(map(lambda c:c[0],Counter(re.sub('\b\w+\b',' ',f.read()).split()).most_common(3)))
print(check('./t.txt'))