python高级编程和算法
import copy
#a = ("a","b","c")
#a = ["a","b","c"]
a = {"a","b","c"}
b =a
c = copy.copy(a)
d = copy.deepcopy(a) # print(b)
# print(c)
# print(d)
# print(id(b))
# print(id(c))
# print(id(d))
"""
考点:
1.可变对象:列表和字典
2.不可变对象:一旦创建就不可修改的对象:元组,字符串,数字
"""
class Person: #类对象
x = 5
y = 6
def __init__(self,x,y):
self.x = x
self.y = y
print(self.x)
print(self.y)
def add(self):
return self.x +self.y
#实例对象
p = Person(1,2)
p.z = 9 # 实例变量
# print(p.z)
# #p1 = Person(3,4)
# print(Person.add(Person(3,4)))
# print(p.add())
# print("-------------------------")
# print(p.z)
# print(p.x) #实例变量
# print(p.y) #实例变量
# print("************************************")
# print(Person.x) # 类变量
# print(p.add())
"""
考点:
1.类对象和实例对象
2.类变量和实例变量
""" # a *args **kwargs
def function(a,*args,**kwargs):
print(type(a))
print(type(args))
print(type(kwargs))
print(a)
print(args)
print(kwargs)
# function(1,1,1)
# function(6,7,8,9,b=2,c=3,d=4) """
考点:
1.位置必须是一定的a,*args,**kwargs
2.类型分别是int,tuple,dict
""" import time
def runtime(function):
def get_now_time():
print(time.time())
function()
return get_now_time
@runtime
def run():
print("run") def runtime1(function):
def get_now_time(*args):
print(time.time())
function(*args)
return get_now_time
@runtime1
def run1(i):
print(i)
#run()
#run1(1)
# print("___________________________________") def runtime3(function):
def get_now_time(**kwargs):
print(time.time())
function(**kwargs)
return get_now_time
@runtime3
def run3(**kwargs):
print(kwargs)
#run3(a="aaa") def runtime4(function):
def get_now_time(name,**kwargs):
print(time.time())
function(name,**kwargs)
return get_now_time @runtime4
def run4(name,**kwargs):
print("名字==",name)
print(kwargs) #run4("jiyanjiao",a="haha") """
考点:
1.装饰器写法
2.不带参数装饰器
3.带参数的装饰器
""" def func1():
for i in range(1,5):
return i def func2():
for i in range(1,5):
yield i
# print(func1())
# print(func2()) # yi = func2()
# for i in yi:
# print(i) # print("**************************") re =func2()
# for i in re:
# print(i) """
考点:
1.yield 与 return区别
2.yield:生成器类型
""" # 题目:根据一个列表,创建一个新的列表,用一行代码
# lambada表达式 推导式 list1 = [1,2,3,4]
result = map(lambda x: x*x,list1)
# print(list(result))
# print("&&&&&&&&&&&&&&&&&&&&&&&&&&")
# 用推导式来解决,列表推导式
list2 = [i*i for i in list1]
#print(list2) list3 = [i*i for i in list1 if i>2]
#print(list3) # 集合的推导式 打印结果无序,因为集合是无序的
list1 = {1,2,3,4}
list4 = {i*i for i in list1}
#print(list4) #字典的推导式
dict1 = {
"key1":"value1",
"key2":"value2"
}
keys = [key for key ,value in dict1.items()]
#print(keys) key_value = {key:value for key,value in dict1.items()}
#print(key_value) key_value_if = {key:value for key,value in dict1.items() if key=="key1"}
#print(key_value_if)
"""
考点:
1.推导式 [表达式,for循环,条件]
""" '''
常见排序方式:
插入排序,希尔排序,直接排序,堆排序
冒泡排序,快速排序,归并排序,基数排序
'''
# 给定一个列表,将这个列表进行排序,要求:时间复杂度要小于o(n^2) '''
复杂度:
1.时间复杂度:指算法在计算的过程中所需要的计算工作量
2.空间复杂度:指算法在计算过程中所需要的内存空间
常见的时间复杂度:
常数阶O(1),对数阶O(log2n),线性阶O(n)
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3)
随着问题的规模n,不断的增大,上述的时间复杂度就不断的增大,意味着算法的执行效率越低
''' #冒泡排序的实现
# 相邻的两个数字进行比较,大的向下沉,最后一个元素时最大的
# 时间复杂度O(n^2) def bublle_sort(blist):
count = len(blist)
for i in range(0,count):
for j in range(i+1,count):
if blist[i] > blist[j]:
blist[i],blist[j] = blist[j],blist[i]
return blist blist = [8,5,90,31,1]
s = bublle_sort(blist)
#print(s) """
快速排序:
思想:递归
列表中取出第一个元素作为标准,把比第一个元素小的都放在左侧,把比第一个元素大的都放在右侧
最小的在左边,最大的在右边,递归完成即排序结束
时间复杂度:O(nlog2n)
"""
# 使用递归+推导式写快速排序 def quick_sort(quick_list):
if quick_list==[]:
return []
else:
first = quick_list[0]
less = quick_sort([l for l in quick_list[1:] if l < first])
more = quick_sort([m for m in quick_list[1:] if m >=first])
return less + [first] + more
quick_list = [8,5,90,31,1]
print(quick_sort(quick_list))
python高级编程和算法的更多相关文章
- python高级编程:有用的设计模式3
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...
- 第三章:Python高级编程-深入类和对象
第三章:Python高级编程-深入类和对象 Python3高级核心技术97讲 笔记 3.1 鸭子类型和多态 """ 当看到一直鸟走起来像鸭子.游泳起来像鸭子.叫起来像鸭子 ...
- python高级编程:有用的设计模式2
# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...
- python高级编程:有用的设计模式1
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言 ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- python高级编程之选择好名称:完
由于时间关系,python高级编程不在放在这边进行学习了,如果需要的朋友可以看下面的网盘进行下载 # # -*- coding: utf-8 -*- # # python:2.x # __author ...
- python高级编程读书笔记(一)
python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...
- python高级编程之列表推导式
1. 一个简单的例子 在Python中,如果我们想修改列表中所有元素的值,可以使用 for 循环语句来实现. 例如,将一个列表中的每个元素都替换为它的平方: >>> L = [1, ...
- Python高级编程之生成器(Generator)与coroutine(二):coroutine介绍
原创作品,转载请注明出处:点我 上一篇文章Python高级编程之生成器(Generator)与coroutine(一):Generator中,我们介绍了什么是Generator,以及写了几个使用Gen ...
随机推荐
- SVN安装和使用(简单版)
为什么使用SVN? 通常软件的开发需要团队协作开发,每个人负责一个方面,都做完后需要把每个人的代码整合在一起,而每个人的代码方面不同或版本不同就会拖延开发进度对开发项目造成麻烦,如果一个人需要另一个人 ...
- 【转载】 Sqlserver限制最大占用内存
在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ...
- SQL Server 一列或多列重复数据的查询,删除(转载)
转载来源:https://www.cnblogs.com/sunxi/p/4572332.html 业务需求 最近给公司做一个小工具,把某个数据库(数据源)的数据导进另一个数据(目标数据库).要求导入 ...
- ThreadPoolExecutor中的submit()方法详细讲解
https://blog.csdn.net/qq_33689414/article/details/72955253
- 20190421-那些年使用过的CSS预处理器(CSS Preprocessor)
写在前面的乱七八糟的前言: emmm,不得不说,早上七点是个好时间,公园里跳广场舞的大妈,街边卖菜刀看报的大爷,又不得不说,广州图书馆是个好地方,该有的安静,该有的人气,听着楼下小孩子的声音,看着周围 ...
- C#打印模板设计,E店宝打印模板设置,winfrom打印模板设计,DevExpress.XtraReports.UI.XRTable 表格代码生成。
一.打印效果 二.代码编辑 1 .table1 : table控件的Name: 2.label33 :label控件 实现绑定[外部平台单号]的控件: 3.label32:绑定[E店宝订单编号](S开 ...
- 一起学Android之Intent
本文简述在Android开发中Intent的常见应用,仅供学习分享使用. 什么是Intent? Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Inten ...
- javaFX笔记----ComboBox模仿qq账号下拉框删除账号
myComboBox.setCellFactory( new Callback<ListView<String>, ListCell<String>>() { @O ...
- Redis 主从复制原理及雪崩 穿透问题
定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMw ...
- php中curl返回false的解决办法
本文介绍一下自己在使用curl中遇到的问题解决办法.希望可以帮助到大家. 原文地址:代码汇个人博客 http://www.codehui.net/info/37.html 首先来看一个封装的curl函 ...