一.冒泡排序
# 冒泡排序
lst = [11, 22, 35, 6, 2]
for i 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 += 1
print(lst)
二.经典题1:文件al.txt内容(升级题)
序号 部门 人数 平均年龄 备注 描述
1 python 30 26 单身狗 屌丝居多
2 Linux 26 30 没对象 全是屌丝
3 运营部 20 24 女生多 没有人
通过代码,将其构建成这种数据类型:
[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'}]
f = open("a6.txt", mode="r", encoding="utf-8")
line = f.readline()
lst = line.split() # 第一行切割完成 key就准备完了
result = []
# 接着向后读取
for lin in f:
ll = lin.split() # 每一行都进行切割
dic = {}
for i in range(len(ll)): # i 表示ll的索引\
# lst[i] # key
# ll[i] # value
dic[lst[i]] = ll[i]
result.append(dic)
print(result)
三.三元运算符
a = 1
b = 2
h = a if a>b else b
print(h)
四.Python中递归 层数
在Python中递归层数最多998
五.用迭代器模拟for 循环
lst = [1,2,3,4]
it = lst.__iter__() # 获取迭代器
while 1:
try:
name = it.__next__() # 获取内容
print(name)
except StopIteration: # 抛异常
break
六. 接收n 个参数, 返回最大值 和 最小值(字典)
def func(*args):
ma = args[0] # 假设第0项就是最大值
mi = args[0] # 假设第0项就是最小值
for el in args:
if el > ma:
ma = el # 当前这个元素比假设的那个大,进行赋值
if el < mi:
mi = el
return {"最大值": ma, "最小值": mi}
ret = func(123,42, 22, 545, 21)
print(ret)
七. 经典题
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.不存在. 创建一个新字典
# 3.第一次循环user_lsit result[] 为空 所以直接创建dic{} 执行else
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)
八.深浅拷贝
import copy
赋值
l1 = [1, 2, 3, [1, 4, 5]]
l2 = l1 # = 是赋值, 数据完全共享,不管改哪个, 两个列表的值都会变
l2[0] = 'alex'
print(l1) # ['alex', 2, 3, [1, 4, 5]]
print(l2) # ['alex', 2, 3, [1, 4, 5]]
浅拷贝
l1 = [1, 2, 3, [1, 4, 5]]
l2 = copy.copy(l1) # 浅拷贝, 数据半共享,只改变列表的第一层,第二层不变
l1[0] = 'alex'
# l2[0] = 'alex'
print(l1) # ['alex', 2, 3, [1, 4, 5]]
print(l2) # [1, 2, 3, [1, 4, 5]]
深拷贝
l1 = [1, 2, 3, [1, 4, 5]]
l2 = copy.deepcopy(l1) # 深拷贝, 数据完全不共享,互相没有影响
l1[0] = 'alex0'
l2[3][0] = 'alex'
print(l1, l2) # ['alex0', 2, 3, [1, 4, 5]] [1, 2, 3, ['alex', 4, 5]]