'''''' ''' 變量的數據類型 int str bool list 五、字典 dict 定義和寫法:由{}表示,每一個元素是key:value的鍵值對形式,元素間是逗號隔開 特色: 一、key是可哈希的-不可變類型(好比:int str tuple bool) value的類型是不限制的,能夠存聽任意數據類型 二、字典是無序的,沒有索引和切片 常見操做: 增 一、dic[key] = value #單個鍵值對添加,先創建一個空字典 二、dic = {k1:v1,k2:v2} #一次添加多個鍵值對-字典的定義 三、ret= dic.setdefault(key,value) #若是key已經存在,不會覆蓋 #添加鍵值對,返回添加的value 四、dic2 = dic.fromkeys(iterable,value) #iterable中每一個元素共用一個value dic2 = dict.fromkeys(iterable,value) #類方法 #注意點1:會新產生一個新字典,原字典自己不會改變 #注意點2:fromkeys是一個類方法 刪 一、pop 參數是key,刪除key對應的元素-鍵值對,而且獲取被刪除元素的value 二、popitem 參數是空,隨機刪除一個元素-鍵值對,而且獲取被刪除元素-鍵值對 注意:從表面看,是刪除了字典的最後一個鍵值對,可是字典的key是無序的,全部仍是隨機的 三、del 一、參數是key,刪除key對應的元素-鍵值對 二、還能夠直接刪除整個字典,回收內存空間 四、clear 清空字典的元素-鍵值對,變成空字典 改 1 dic[key] = 新value 根據key獲取到字典的value,對value進行從新賦值 2 update dic1.update(dic2) 把字典2的元素依次添加到字典1 注意:若是字典2的key和字典1的key有相同的,會出現value的覆蓋 查-取值 ''' ''' 1 dic[key] 根據自定的key取value值,若是key不存在,就報錯 2 get 寫法:字典.get(key[,value]) 參數1是key,參數2是默認返回值(不寫默認是None) 一、若是key存在,就返回字典中key對應的value 二、若是key不存在,不會報錯,會返回參數2(參數2不寫默認是None) 這一點上,健壯性強於dic[key]來取值 3 setdefault 添加元素,並取值元素的value(key若是已經存在,不會覆蓋) 寫法:字典對象.setdefault(key1,value1) 參數1是新增長元素的key,參數2是新增長元素-鍵值對的value 一、將參數1和參數2做爲新元素-鍵值對添加到字典對象 原字典對象添加了一個新元素-鍵值對 二、返回者是參數2,即獲取新增長的value做爲返回值-這個返回value1就是取值 (和pop的刪除並返回被刪除值有相似之處, setdefault是添加並返回添加的value) 三、若是key1已經在原字典對象中存在了,新的鍵值對將沒法添加,原字典對象保持不變 這裏不會覆蓋原字典對象的value 注意點:不會覆蓋這個點和dic[key]=value,若是key已經存在,會覆蓋,是不一樣的 字典for循環: 一、iterable dic1 dic1.keys() dic1.values() 二、for i in dic1: print(i,dic1[i]) for i in dic1.keys(): print(i,dic1[i]) #用的比較少 for i in dic.values(): print(i) #適用場景:好比求value的平均值 for i in dic1.items(): print(i) #這裏返回是列表,列表的元素是鍵值對元組 (k1,v1) for k,v in dic1.items(): print(k,v) 6 元組--tuple 一、元組是隻讀的,不可變 不可變的是元組的第一層 若是元組的元素是列表,列表是能夠添加刪除元素的 二、操做方法比較的少 count() index() len() 三、iterable-可迭代的 支持for循環 (for循環的取值速度:dict>set>list>tuple) 四、元組是沒有元組推導式的 7 集合-set 一、集合的概念:只有key的字典 二、特色: 無序 去重 元素是不可變的(可哈希的)--由於字典的key是不可變的 三、支持for循環,iterable 四、可凍結的集合 frozen 特色:frozen自己是不可變的(可哈希) 五、操做 兩個集合之間能夠& | - (交集&、並集|、差集)等 六、備註: set不能做爲字典的key frozetkey做爲字典的key '''
''''' ''' 1、條件判斷、循環 1 條件判斷if if 條件: 代碼塊(語句塊) elif 條件: 代碼塊 elif 條件: 代碼塊 。。。 else: 代碼塊 2 循環 1 while循環(條件循環) while 條件: 循環體 break (結束整個循環-本層,若是是2層循環,只能跳出1層,不能跳出2層) continue(結束本次循環-迭代,繼續執行下一次循環) else: pass #當上面的while正常結束後(條件是False的時候,沒有出現break),才執行這個語句 2for循環--主要用於循環遍歷取值 3 print print(message,end='\n',sep=' ') 參數1:打印輸出的信息 參數2:行結束符,不寫默認是換行 \n 參數3:分隔符,不寫默認是空格 注意點:打印2個及以上元素,纔會用到分隔符,打印一個元素,是用不到分隔符的 4 input 用戶交互 5 range range(start,end,step) --range和切片的區別,分隔符不一樣,前者是逗號,後者是冒號 #step不寫,默認是1 切片:li1(start:end:step) 6 文件路徑的分隔符 win \ 反斜槓-捺槓 \還表示轉義 \t \r \n linux / 順斜槓-撇槓 2、運算符 1、算數運算符 + - * / // % ** 2、比較運算符 > >= < <= == != 3、邏輯運算符 and-與 兩個同時爲真,結果纔是真 or-或 兩個中有一個是真,結果就是真 not-非 非假即真 非真即假 優先級順序: 小括號() >not > and >or a and b 若是a不是0,返回b 若是a是0,返回a a or b 若是a不是0,返回a 若是a是0,返回b 4、賦值運算符 += -= *= /= %= a+=b 等價於 a = a+b 5、成員運算符 x in xx 好比:判斷列表或者字典的元素 六、is和== is比較的是內存地址 ==比較的是值 小數據池:int str bool這三種類型的對象建立以後,符合規則的,會被緩存到小數據池 下次直接從小數據池中調用,從而節省內存 好比:a1='jack' a2='jack' 在建立變量a1的時候,會新開闢一個內存空間,這個內存空間的名字是a1,裏面的值存的是'jack' 且把這個內存空間緩存到小數據池子中 在建立變量a2的時候,不會新開闢另一個內存空間,而是把a2指向'jack'所在的內存地址 即a1和a2的內存地址是同樣的 7、文件操做 open(文件路徑,mode='模式',encode='編碼') 模式: r w a r+ w+ a+ rb wb ab for循環能夠迭代文件句柄,拿到的是一行一行的內容 seek(0,0) #光標移到文件開頭 參數1是偏移量 參數2中:0表示文件開頭,1表示文件當前位置,2表示文件末尾 seek(0,2) #光標移到文件末尾 seek(0,1) #光標移到當前位置 tell() #打印光標的當前位置 with open(文件路徑,mode='模式',encode='編碼') as f: pass #不須要flush和close 文件修改: 打開源文件,從源文件中讀取內容到內存,修改,而後將內容寫入到新文件。 刪除源文件,把新文件重命名成源文件的名字