第1月3周3天
Posted yonghuierming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1月3周3天相关的知识,希望对你有一定的参考价值。
本末倒置
- 函数的初识
- 函数的返回值
函数的参数
readLines每个元素都是文件每一行+
扩展性
老师昨天讲了两道题,都涉及到了扩展性。列表套字典转变成字典套字典,使 内容方便查找。
其次就是用列表下标的查找元素的方法直接作为新元素的值。这样就限制了扩展性。
!!!error 文件w模式
是每次w模式源打开文件产生文件句柄才会清空,如果打开一次并且写多次不会每次写都清空,直到关闭文件。
!!!
list3 = [
{"name": "alex", "hobby": "抽烟"},
{"name": "alex", "hobby": "喝酒"},
{"name": "alex", "hobby": "烫头"},
{"name": "alex", "hobby": "Massage"},
{"name": "wusir", "hobby": "喊麦"},
{"name": "wusir", "hobby": "街舞"},
]
list4 = [
{"name": "alex", "hobby_list": ["抽烟", "喝酒", "烫头", "Massage"]},
{"name": "wusir", "hobby_list": ["喊麦", "街舞"]},
]
将list3 这种数据类型转化成list4类型,你写的代码必须支持可拓展,
比如list3 数据在加一个这样的字典{"name": "wusir", "hobby": "溜达"}, 你的list4{"name": "wusir", "hobby_list": ["喊麦", "街舞", "溜达"],
或者list3增加一个字典{"name": "太白", "hobby": "开车"},
你的list4{"name": "太白", "hobby_list": ["开车"],无论按照要求加多少数据,你的代码都可以转化.如果不支持拓展,则4分,支持拓展则8分.
ll = []
l_list = []
with open("a2",encoding="utf-8",mode="r") as f1:
for line in f1:
line_list = line.strip().split()
dic = {}
for i in line_list:
a,b = i.strip().split(":")
dic.setfault(a,b)
ll.append(dic)
拓展型
"拓展列"
name_list = ["name","price","amount","year","备注"]
l1 = []
with open("a",encoding="utf-8") as f1:
for line in f1:
if line.strip():
line_list = line.strip().split()
dic = {}
for index in range(len(name_list)):
dic[name_list[index]] = line_list[index]
l1.append(dic)
print(l1)
"去重复项,并且组合不同项"
dic = {}
for i in list3:
if i["name"] in dic: # 直接获取键会报错所以要用in
if not i["hobby"] in dic[i["name"]]["hobby_list"]:
dic[i["name"]]["hobby_list"].append(i["hobby"])
else:
dic.setdefault(i["name"],{"name":i["name"],"hobby_list":[i["hobby"],]})
print(list(dic.values()))
第二种方法:
ret = []
for i in user_list:
for j in ret:
if i["name"] == j["name"]:
if i["hobby"] not in j["hobby_list"]:
j["hobby_list"].append(i["hobby"])
break
else:
ret.append({"name": i["name"], "hobby_list": [i["hobby"], ]})
print(ret)
第三种方法:
d = {}
for i in user_list:
if i["name"] in d:
if i["hobby"] not in d[i["name"]]:
d[i["name"]].append(i["hobby"])
else:
d.setdefault(i["name"],[i["hobby"],])
u_list =["name","hobby_list"]
list4 = []
for i in d:
dict = {"name":i,"hobby_list":d[i]}
list4.append(dict)
print(list4)
函数
面向过程式编程 linux源码,只针对现有的需求。
如果需求与需求之间有相同性 面向过程需要重新写。
函数优点:
减少代码重复率
增强代码的阅读性
函数是什么?
封装功能
def func1():
a = b
b = 2
c = a + b
d = ‘alex‘
e = [1,2,3]
return c,d,e
ret = func1()
print(ret,type(ret))
def len():
s = ‘sfsfslfjsljsfjl‘
count = 0
for i in s :
count += 1
函数的传参:
实参
形参
位置参数
三元运算只针对简单的 if else 结构
关键字传参 可以不按照顺序,但必须一一对应
def func1(x,y):
return x+y
print(func1(y=100,x=99))
混合传参 关键字参数一定要在位置参数后,默认参数归于关键字参数。变长位置参数放在,位置参数最后。变长关键字参数放在关键字参数最后。
def func1(a,b,n,x,y)
形参角度
位置参数 :按照顺序一一对应
默认参数 :给其传值,将原默认参数覆盖掉,不传值。
有些值不经常变,经常使用的值就使用。
def namelist(name,sex=‘男‘):
with open(‘namelist‘,encoding=‘utf-8‘,mode=‘a‘) as f1:
f1.write(‘{}|{}
‘.format(name,ssex))
while 1:
name,sex = input(‘‘).strip().replace(‘,‘,‘,‘).split(‘,‘)
if name.upper() == ‘Q‘:break
namelist(name,sex if sex.strip() else None)
默认参数陷阱
默认参数为可变的数据类型,它始终使用一个。
以上是关于第1月3周3天的主要内容,如果未能解决你的问题,请参考以下文章