重点

冒泡排序:

lst = [88,5,8,6,1,23]
for a in range(len(lst)): # 记录内部排序的次数
i = 0
while i < len(lst) - 1: # 把最大值移动到右端
if lst[i] > lst[i+1]: # 比较,
lst[i], lst[i+1] = lst[i+1], lst[i] # 交换
i = i + 1
print(lst)




文件改操作:
import os

with open('a.txt',mode='r',encoding='UTF-8') as a,\
open('a1.txt',mode='w',encoding='UTF-8') as a1:
for b in a:
b1=b.replace('alex','SB')
a1.write(b1)
os.remove('a.txt')
os.rename('a1.txt','a.txt')


求最大值和最小值:
def func(*args):
m = args[0] # 假设第0项就是最大值
mi = args[0]
for el in args:
if el > m:
m = el # 当前这个元素比假设的那个大. 记录当前这个比较大的数
if el < mi:
mi = el
return {"最大值":m, "最小值":mi}

print(func(5,7,12,1,46,87,3))



user_list=[
{"name": "alex", "hobby": "抽烟"},
{"name": "alex", "hobby": "喝酒"},
{"name": "alex", "hobby": "烫头"},
{"name": "wusir", "hobby": "喊麦"},
{"name": "wusir", "hobby": "街舞"},
{"name": "alex", "hobby": "泡吧"},
{"name":"太白", "hobby":"开车"}
]
# [{"name": "alex", "hobby_list": ["抽烟","喝酒","烫头","泡吧"]},{"name": "wusir", "hobby_list": ["喊麦", "街舞"]},]

result = [] # {'name': 'alex', 'hobby_list': ['抽烟']}
for user in user_list:
# 1.判断是否在result里面存在了这个人, 如果存在. 把hobby_list添加一个hobby
# 2.不存在. 创建一个新字典
for new_user in result:
if user['name'] == new_user['name']:
new_user['hobby_list'].append(user['hobby'])
break
else:
dic = {}
dic["name"] = user['name']
dic['hobby_list'] = [user['hobby']]
result.append(dic)
print(result)



user_list = [{"name":"alex","hobby":"抽烟"},
{"name":"alex","hobby":"喝酒"},
{"name":"alex","hobby":"烫头"},
{"name":"wusir","hobby":"喊麦"},
{"name":"wusir","hobby":"街舞"},]

# 结果 = [{"name": "alex", "hobby_list": ["抽烟","喝酒","烫头",]},{"name": "wusir", "hobby_list": ["喊麦", "街舞"]},]

def main(user_list):
dic = {}
for i in user_list:
if i['name'] not in dic:
dic[i['name']] = {'name':i['name'],'hobby_list':[i['hobby']]}
else:
dic[i['name']]['hobby_list'].append(i['hobby'])
return list(dic.values())
print(main(user_list))


迭代器:
lst=[5,2,0,1,3,1,4]
s=lst.__iter__()
while True:
try:
print(s.__next__())
except StopIteration:
break



归并排序算法:
lst1 = [1, 3, 7, 9, 12]
lst2 = [4, 8, 9, 13]
def merge(a, b):
c = []
h = j = 0
while j < len(a) and h < len(b):
if a[j] < b[h]:
c.append(a[j])
j += 1
else:
c.append(b[h])
h += 1

if j == len(a):
for i in b[h:]:
c.append(i)
else:
for i in a[j:]:
c.append(i)

return c
print(merge(lst1,lst2))




递归函数:
# 遍历树形结构
# import os
# filePath = "d:\sylar\python_workspace"
#
# def read(filePath, n):
# it = os.listdir(filePath) # 打开文件夹
# for el in it:
# # 拿到路径
# fp = os.path.join(filePath, el) # 获取到绝对路径
# if os.path.isdir(fp): # 判断是否是文件夹
# print("\t"*n,el)
# read(fp, n+1) # 又是文件夹. 继续读取内部的内容 递归入口
# else:
# print("\t"*n,el) # 递归出口
#
# read(filePath, 0)




二分查找:
# lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
# n = 567
# left = 0
# right = len(lst) - 1
# count = 1
# while left <= right:
# middle = (left + right) // 2
# if n > lst[middle]:
# left = middle + 1
# elif n < lst[middle]:
# right = middle - 1
# else:
# print(count)
# print("存在")
# print(middle)
# break
# count = count + 1
# else:
# print("不存在")
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]

def binary_search(left, right, n):
middle = (left + right)//2
if left > right:
return -1
if n > lst[middle]:
left = middle + 1
elif n < lst[middle]:
right = middle - 1
else:
return middle
return binary_search(left, right, n)
print(binary_search(0, len(lst)-1, 65) )


def binary_search(lst, n):
left = 0
right = len(lst) - 1
middle = (left + right) // 2
if right <= 0:
print("没找到")
return
if n > lst[middle]:
lst = lst[middle+1:]
elif n < lst[middle]:
lst = lst[:middle]
else:
print("找到了")
return
binary_search(lst, n)
binary_search(lst, 65)











猜你喜欢

转载自www.cnblogs.com/zm419914/p/9355427.html
今日推荐