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学习第九天,构建字典处理数据, 分别赋值,输入中文逗号.....函数初识的主要内容,如果未能解决你的问题,请参考以下文章

Python初学者第九天 字符串列表字典练习

学习python课程第十九天

(Python第九天)Collections模块

python学习第十九天

第九天Python学习记录

python第九天学习总结