python学习第九天,构建字典处理数据, 分别赋值,输入中文逗号.....函数初识
Posted jiandanxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第九天,构建字典处理数据, 分别赋值,输入中文逗号.....函数初识相关的知识,希望对你有一定的参考价值。
1.创建一个字典{ },增强可判断性,处理数据
list3 = [{"name": "alex", "hobby": "抽烟"}, {"name": "alex", "hobby": "喝酒"}, {"name": "alex", "hobby": "烫头"}, {"name": "alex", "hobby": "Massage"}, {"name": "wusir", "hobby": "喊麦"}, {"name": "wusir", "hobby": "街舞"}, ] list4 = [] dic = {} for i in list3: 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‘]]) list4 = list(dic.values()) print(list4)
字典的增:
dic = {}
dic[‘name] = ‘alex‘ (直接增加了一个键值对)
分别赋值:
1.对于元组,列表可以分别赋值
list1 = [1,2,3] a,b,c = list1 print(a,b,c)#1 2 3 list2 = [(1,2),(‘a‘,‘b‘)] e,f = list2 print(e,f) #(1, 2) (‘a‘, ‘b‘) h,i = e print(h,i) #print(h,i)
2.字典dict.items()
dict.keys()
dict.values() 可以分别赋值
dic = {‘name‘:‘alex‘,‘hobby‘:‘girl‘} a,b = dic.keys() list2 = list(dic.keys()) print(a,b) #name hobby print(list2) #[‘name‘, ‘hobby‘] c,d = dic.values() print(c,d) #alex girl e,f = dic.items() list1 = list(dic.items()) print(e,f) #(‘name‘, ‘alex‘) (‘hobby‘, ‘girl‘) print(list1) #[(‘name‘, ‘alex‘), (‘hobby‘, ‘girl‘)]
文件操作:
w 模式下的write: 只能写入字符串类型
writelines,可以将列表内的内容,以字符串的形式输出 (类表里只能有字符串)
with open(r‘a.txt‘,mode=‘w‘,encoding=‘utf-8‘) as f: f.write(‘alex‘) f.writelines([‘1‘,‘2‘])
函数初识:
def func(): -------->函数名要有可识别性
pass
return -------->函数的返回值
func() -------------->函数的调用(执行)
函数的作用:
封装一个功能
函数的优点:
减少代码的重复率
增强代码的可读性
------在函数体中遇到return:
1.直接结束
2.调用函数时有返回值:(3种情况)
a. return后面为空----->返回None
def func(): a = 1 b = [1,2] return func() print(func()) #None
b.return后面跟1个值----->return后面跟的a是什么类型,就是什么类型
def func(): a = 1 b = [1,2] return a func() print(func()) #1
c.return 后面跟多个值----->返回一个元组
def func(): a = 1 b = [1,2] return a,b func() print(func()) #(1, [1, 2])
#函数中尽可能不要哦出现print()
#print(func) 打印的是id地址
形参与实参:
def func(): ------->形参
pass
return
func() -------------->实参
实参:
1.位置实参,需要一一对应
2.关键字实参,可以不按顺序,但需要一一对应
3.混合实参,位置实参必须在前面
def func1(x,y): return x + y name = 1 func1(name,y=100,) #name 是位置实参 print(func1(name,y=100,))
形参:
1.位置行参,必须一一对应
def func1(x,y,z): print(x,y,z) func1(1,2,3)
2,默认行参,一般不变,在实参时可以重新赋值
def func1(x,y,a=666): # a=666是默认参数 一般是不可变数据类型 print(x,y,a) func1(1,2) # 不传值,不报错 func1(1,2,333) # 333可以覆盖666
*****默认形参的数据一般是不可变类型,在是可变数据类型的情况下(如[ ],是列表的时候)id恒定
#必考的面试题: def func1(x,l1=[]): #默认参数如果是可变的数据类型,此数据的id恒定 l1.append(x) return l1 ret = func1(1) print(ret,id(ret)) ret1 = func1(100) print(ret1,id(ret1))
3.动态形参:*args 和 **kwargs 使函数变得可拓展
args 与( *args,**kwargs)
前者表示1位置参数
后者*和**表示聚合,args和kwargs,是约定俗成
*args 将实参里的位置参数聚合到一个元组中,并将这个元组赋值给args(即args是一个元组)
**kwargs 将实参里的关键字参数聚合到一个字典中,并将这个字典赋值给kwargs(即kwargs是一个字典)
万能加法计算器:
def sum1(*args,**kwargs): sum2 = sum(args) return sum2 print(sum1(1,2,3,4,55,))
* 和 ** 的魔性用法:
1.在定义函数时,* 和 **起到聚合的作用
2.在调用函数时,* 和 **起到的作用. --->在实参中*和**可以将后面可迭代对象打散,然后汇集成一个元组,或一个字典
l1 = [1,2,3,4] l2 = [5,6,7,8,9] def func1(*args,**kwargs): print(args) func1(*l1,*l2)
#(1, 2, 3, 4, 5, 6, 7, 8, 9)
l1 = {‘a‘:1,‘b‘:3} l2 = {‘c‘:2,‘d‘:4} def func1(*args,**kwargs): print(kwargs) func1(**l1,**l2) #{‘a‘: 1, ‘b‘: 3, ‘c‘: 2, ‘d‘: 4}
位置参数,默认参数,动态位置参数(*args),动态默认参数(**kwargs) 在形参中的放置顺序
def func(a,b,*args,‘age‘=18,**kwargs): pass
开始于结束:
range(10) 从0开始顾头不顾尾 0-->9
index() 从0开始
len() 从1开始
enumerate() 从0开始,主要用于列表 (可迭代对象)
以上是关于python学习第九天,构建字典处理数据, 分别赋值,输入中文逗号.....函数初识的主要内容,如果未能解决你的问题,请参考以下文章