1. 程式人生 > >python學習第九天,構建字典處理數據, 分別賦值,輸入中文逗號.....函數初識

python學習第九天,構建字典處理數據, 分別賦值,輸入中文逗號.....函數初識

enum with open 輸入中文 時有 復制代碼 聚合 重新 可讀性 輸入

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學習第九天,構建字典處理數據, 分別賦值,輸入中文逗號.....函數初識