知识点

生成式(推导式)用法

生成式 用来生成列表、集合、字典。

prices = {'AAPL': 191.88,'GOOG': 1186.96,'IBM': 149.24,'ORCL': 48.44,'ACN': 166.89,'FB': 208.09,'SYMC': 21.29
}
# 用股票价格大于100元的股票构造一个新的字典
prices2 = {key: value for key, value in prices.items() if value > 100}
print(prices2)

嵌套的列表

我对他的理解就是C语言中的二维数组

herpq 模块(堆排列)

import heapq    ##导包list1 = [34, 25, 12, 99, 87, 63, 58, 78, 88, 92]   ##一个列表
list2 = [                                          ##一个嵌套列表,嵌套的字典{'name': 'IBM', 'shares': 100, 'price': 91.1},{'name': 'AAPL', 'shares': 50, 'price': 543.22},{'name': 'FB', 'shares': 200, 'price': 21.09},{'name': 'HPQ', 'shares': 35, 'price': 31.75},{'name': 'YHOO', 'shares': 45, 'price': 16.35},{'name': 'ACME', 'shares': 75, 'price': 115.65}
]
print(heapq.nlargest(1, list1))      ## 列表中 最大的1个
print(heapq.nsmallest(3, list1))     ## 列表中 最小的3个
print(heapq.nlargest(2, list2, key=lambda x: x['price']))   ##以key:price来找出最大的2
print(heapq.nlargest(2, list2, key=lambda x: x['shares']))  ##以key:shares来找最小的2

itertools模块

import itertoolsitertools.permutations('ABCD') # 产生ABCD的全排列itertools.combinations('ABCDE', 3)# 产生ABCDE的五选三组合itertools.product('ABCD', '123')# 产生ABCD和123的笛卡尔积itertools.cycle(('A', 'B', 'C'))# 产生ABC的无限循环序列

collections模块

用到再看。

数据结构

算法:解决问题的步骤和方法
用时间复杂度和空间复杂度判断算法的好坏【现在一般除了嵌入式领域,一帮都不看空间复杂度,现在的硬件的大小远远够用的】
一般用O(n)来表示。有常数时间复杂度、对数时间复杂度、线性时间复杂度、平方时间复杂度、阶乘时间复杂度。
以上就是一些概念。一些简单的算法
排序算法。

  1. 简单的选择排序
def select_sort(items):  #lambda 是匿名函数,定义一个函数,比较大小的for i in range(len(items)-1):                ##下标从0开始的。所以减一 ,开始遍历print("排%s次"%(i+1))min_index =i                             ##起始的下标为0for j in  range(i+1,len(items)):         ##这个循环是找到最小元素的下标。if items[j]<items[min_index]:  ##min_index=jitems[i],items[min_index]=items[min_index],items[i]    ##把小的元素往前移。print("得到%s"%items)return itemsimport random
li=list(range(8))
random.shuffle(li)  ##随机生成
print(li)
select_sort(li)
print(li)

  1. 冒泡排序
    冒泡排序,相邻的两个元素比较,将小的对调的前面。用了两个循环。先把最大的元素放到了最后,把最小的元素往前放。完成一次内循环就将最大的元素移到了最后。内循环中减 i 的目的少一次循环(不管已经找到的大元素)。
def bubble_sort(items):for i in range(len(items) - 1):swapped = Falsefor j in range(len(items) - 1 - i):           #直接对换元素,if  items[j]> items[j + 1]:items[j], items[j + 1] = items[j + 1], items[j]swapped = Trueprint("排序第%s和%s结果:%s"%(j,j+1,li))if not swapped:breakreturn itemsimport random
li=list(range(9))
random.shuffle(li)
print("随  机  列  表:%s"% li)
bubble_sort(li)
print(li)

  1. 搅拌排序(升级版的冒泡排序)
    两头排,把大的排一遍,在把小的排一遍
def bubble_sort(items):for i in range(len(items)-1):swapped = Falsefor j in range(len(items)-1-i):       #这个循环完成就将最大元素放到最后if items[j]>items[j+1]:items[j],items[j+1]=items[j+1],items[j]print("第%s和第%s位交换后:%s"%(j,(j+1),items))swapped=Trueif swapped:swapped=False#这里,已经完成了最大元素的排序,就可以少一次循环#这个循环是找最小的移动到最前面,for j in range(len(items)-2-i,i,-1):  #注意哦这里的j的取值是倒序的。if items[j-1]>items[j]:  items[j],items[j-1]=items[j-1],items[j]print("第%s和第%s位交换后:%s" % (j, (j + 1), items))swapped=Trueif not swapped:breakreturn items
import random
li=list(range(9))
random.shuffle(li)
print("随机生成列表%s:"%li)
bubble_sort(li)
print("拍列完成%s"%li)

  1. 合并
#合并两个有序列表为有序列表
def merge(items1,items2):items=[]  #空列表nm1,nm2=0,0           #分别用来控制两个有序列表的。while nm1<len(items1) and nm2<len(items2):if items1[nm1]<items2[nm2]:    #按序比较两个列表的元素items.append(items1[nm1])  ##将小的那个元素追加到items中。nm1+=1else:items.append(items2[nm2])nm2+=1items+=items1[nm1:]     ##拼接剩下的items+=items2[nm2:]return itemsimport random
li1=[1,3,5,7,9]
li2=[0,2,4,6,8]
li=merge(li1,li2)
print(li)

结果

  1. 顺序查找
    这个循环就按照顺序,一个一个对比来找。
def seq_search(items,key):for index,item in enumerate(items):   #enumerate枚举  index 用于下标if item==key:return indexreturn -1
li=[1,5,0,9,3,8,6,4,2,7]
l=seq_search(li,6)
print(l)
  1. 折半查找
    从中间开始比较大小,一步一步缩小范围,从而找到元素。
#折半查找
def bin_search(items,key):start,end=0,len(items)-1  #首尾while start<=end:        ##循环条件,不满足时 查找不到mid=(start+end)//2     ##取中间的下标if key>items[mid]:start=mid+1elif key<items[mid]:end=mid-1else:return midreturn -1
li=[1,4,2,5,3,6,0]
l=bin_search(li,5)
print(l)

常用算法

python学习-进阶相关推荐

  1. Python学习进阶资料

    Python进阶(二十一)-Python学习进阶资料   学习Python已经将近2周了,掌握了基本的语法,并学习了简单的爬虫操作,现将相关学习资料整理如下.大部分资料均取材于慕课网,感觉一路学下来受 ...

  2. 月薪20KPython程序员2018年Python学习进阶书籍推荐

    人生苦短,我用Python! 用了python,与太阳肩并肩,本文与大家分享一些Python编程语言的入门书籍,其中不乏经典.以下书籍已经经中心多位编辑老师进行详细阅读后才整理出来供大家学习! 这里还 ...

  3. python进阶学啥书籍_2018年Python学习进阶书籍推荐

    人生苦短,我用Python! 用了python,与太阳肩并肩,本文与大家分享一些Python编程语言的入门书籍,其中不乏经典.以下书籍已经经中心多位编辑老师进行详细阅读后才整理出来供大家学习! 1.& ...

  4. [深度学习]Part1 Python学习进阶Ch24图像处理OpenCV(24.1~24.13)——【DeepBlue学习笔记】

    本文仅供学习使用 Python高级--Ch24图像处理OpenCV(24.1~24.13) 24. 图像处理OpenCV 24.1 图像读取.显示.保存 24.1.1 图像的基本操作 24.1.2 摄 ...

  5. [深度学习]Part1 Python学习进阶Ch23爬虫Spider——【DeepBlue学习笔记】

    本文仅供学习使用 Python高级--Ch23爬虫Spider 23. 爬虫Spider 23.1 HTTP基本原理 23.1.1 URI与URL 23.1.2 超文本 23.1.3 HTTP 和 H ...

  6. 如何学pyhton深度学习 之 “我的python学习进阶之路”3

    1.pickle库:腌泡菜 >>> import pickle #导入库 >>> my_list = [1,2,['nihao'],3.14] >>&g ...

  7. python学习——进阶操作:根据数据绘制省份热力地图

    输入: pro_sales.csv--省份与值 数据:province--省份列,deal--值列 输出: 中国地图.html 优化--显示省份名称 使用notepad++打开中国地图.html 搜索 ...

  8. python 函数进阶_Python学习入门基础:一篇文章搞定函数基础、函数进阶

    一.函数基础函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数私信小编001即可获取Python学习资料01. 函数的快速体验 1.1 快速体验 所谓函数,就是 ...

  9. Python学习day13-函数进阶(1)

    Python学习day13-函数进阶(1) 闭包函数 闭包函数,从名字理解,闭即是关闭,也就是说把一个函数整个包起来.正规点说就是指函数内部的函数对外部作用域而非全局作用域的引用. 为函数传参的方式有 ...

最新文章

  1. Gogs-Windows Server下搭建Git服务器
  2. 2017.07.05 第五组 NABCD+用户原型+用户调研
  3. Scala模式匹配:对象匹配
  4. 牛客 - 排序(模拟)
  5. face alignment by 3000 fps系列学习总结
  6. web项目开发人员配比_我如何找到Web开发人员的第一份工作
  7. 此beta版本目前不接受任何新测试员_ASO行业资讯|苹果官方App测试工具TestFlight
  8. python 生孩子朋友圈_生娃报喜朋友圈文案 孩子出生发朋友圈的话
  9. ”数独“android小游戏
  10. Android跨进程通信:图文详解 Binder机制 原理
  11. 【MM模块】Subsequent Debits/Credits 事后借记/事后贷记
  12. python3集合_python3集合练习(set)
  13. linux——dmidecode
  14. 宝塔下安装nodejs
  15. Android--万能自定义弹窗
  16. Golang边无际一面
  17. 地鼠与植物,hash + 平衡树
  18. 行走江湖的50条忠告
  19. 探索React生态圈
  20. 2018年“京东好店”排行榜发布 这100家店凭什么上榜

热门文章

  1. 南阳理工ACM 题4《ASCII码排序》
  2. 转载:老师也吐血的试卷
  3. 学习笔记5(类和对象)
  4. HP580G7服务器电流
  5. 微型计算机m3500q,爆发“小”宇宙 创新与实用完美结合 ——联想ThinkCentre M3500q超小商用台式机新品发布...
  6. Redis设置过期时间为当月月底-----自动计算
  7. 如何把老旧笔记本变成一部 Chromebook
  8. # 吴恩达 · 机器学习笔记(① Introduction to Machine Learning)
  9. SpringBoot最佳实践,它来了,它来了
  10. 2018大数据就业前景怎么样