1.遍历第一次,寻找最大值,并且记录最大值的索引max_index
2.list(dict,str)
伪代码:
if(是不是有饭吃): 如果是真 执行 (缩进) else: 如果是假 执行 写代码学习过程 1.用草稿纸画一下思路 2.把草稿纸上的内容,写成伪代码 3.伪代码翻译成代码
list
list是有顺序的 表示方法: []
dict
dict没有顺序 { 'name':'reboot' }
list的特点:
- 有序
- 通过索引获取值:列表[索引]
两个Python内置函数:
len(列表) 返回列表的长度 max() 最大值 min() 最小值
关于变量名:
- 不可以是list,len,max,min,del
删除列表元素:
- del删除元素(根据索引)
- list: 获取,删除,修改(直接赋值)
冒泡排序:
- 冒泡排序是一种典型的通过交换元素消除逆序的排序方法,是一种最简单的方法。
思路:
(1) 每一遍检查将一个最大的元素交换到最后的位置,一些较大元素向右移动,前一个for循环控制第一层元素,从0到7,即range(len(lst)),第二个for循环从1到range(1,len(lst)-i)遍历。 (2)从左到右比较相邻元素,前一个元素较小就交换。 (3)如果原始待排序序列本身有序,可以提前退出排序,设置flag标志,为 true时,退出循环。
例:
两种思路实现冒泡算法:
第一种: arr=[3,6,2,5,1,32,4,7,33,99] for i in range(len(arr)): for j in range(len(arr)): if arr[j] >arr[i]: arr[j], arr[i] = arr[i], arr[j] print arr 第二种: arr=[3,6,2,5,1,32,4,7,33,99] for i in range(1,len(arr)+1): for j in range(len(arr)-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] print arr 第二种方法改进,加入flag标志: arr = [3,6,2,5,1,32,4,7,33,99] for i in range(1,len(arr)+1): flag = True # 插入变量flag,来发现该list是否有序. for j in range(len(arr)-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] flag = False if flag: # 列表本来有序,故退出. break print arr
冒泡排序的特点:
复杂度 O(n^2) 稳定性
切片:
- 切片功能强大,可读性差
- 切片的原则:起点按照切片的方向上,找到重点
list的几个功能:
- append 没有返回值,修改原数组
- count 统计出现次数,返回值,不修改原数组
- extend 没有返回值,修改原数组
- index 没有找到值会报错,很少用
- insert (索引,插入的值),没有返回值,修改原数组.
- pop 可以理解为弹出,默认弹出最后一个返回,否则弹出给定索引的值
dict和json的区别
dict: 在python里是一种具体的数据结构
json: 是一种数据交换格式(标准)
二分法思想:一个排好序的list中,查找一个特定的值.
原理:每次都取一个middle值,与start值与end值作比较,直至取出最终的值。
例:
# arr = [1, 2, 3, 5, 23, 43, 65, 87, 90, 111, 232, 345, 2342, 2432, 3453,] arr =range(10000) start = 0 end = len(arr) - 1 res = 345 # 此为要查找的值. count = 0 while True: count += 1 mid = (start + end) / 2 if res < arr[mid]: end = mid elif res > arr[mid]: start = mid else: print mid break print arr[mid], count
来源:https://www.cnblogs.com/amesy/p/6781750.html