Python學習總結【連載】(六)

Python學習總結【連載】(六)

2018.06.20 Juttachen


概述

+ 21 列表補充

+ 22 元組

  • 概念
  • 元組的查
  • 元組的運算符計算

+ 23 字典

  • 概念
  • 字典的查增刪改
  • 字典的方法和運算符計算

+ 24 集合

  • 概念
  • 集合的查增刪
  • 集合的數(shù)學運算

二十一、列表補充

1.關于對象

列表的值[a,b,c],類型是對象
對象類型:列表闯第、字典烤惊、集合朗儒、元組拷沸、通過類創(chuàng)建的對象
變量在存儲對象數(shù)據(jù)的時候褐捻,存的對象保存在內(nèi)存中的地址蹬叭。
如果用存對象的變量給另外一個變量賦值乡摹,賦的是地址

    list1 = [1,2,3,4]
    list2 = list1
    list2[0] = 10
    print(list2)
    print(list1)

對象賦值的時候就會出現(xiàn)以上情況预明,兩個變量指向同一個對象缩赛,任意變量改變一次對象,
另一個變量也會變撰糠,如果是有序的變量可以通過切片來避免這種問題(切片就是創(chuàng)建新的對象了)
或者用內(nèi)置函數(shù)來拷貝
注意:如果變量里存的對象酥馍,要注意賦值的時候如果不想要兩個變量相互影響,
就不要直接賦值而是拷貝對象產(chǎn)生新的對象然后賦值

    list2 = list1[:]
    list3 = list1.copy()
    list3[1] = 100
    list2[0] = 10
    print(list1)
    print(list2)
    print(list3)

二十二阅酪、元組

1.概念

元組(tuple)就是不可變的列表
列表中除了增加旨袒、修改和刪除相關的操作汁针,其他都適用于元組。

什么時候用峦失?就是存到容器中的數(shù)據(jù)不能被修改的時候使用扇丛,
比如:星期幾對應的值
a. 聲明元組

    tuple1 = (1,2,3,4,'aa',True)
    print(tuple1)

2.元組的查

    print(tuple1[0])
    print(tuple1[-1])
    print(tuple1[:3])

    for item in tuple1:
        print(item)

    for index in     range(len(tuple1)):
        print(tuple1[index])

3.元組的運算符計算

a.+,*運算

    print((1,2,3)+("a","b"))
    print((1,"a") * 3)

b. in ,not in

    a = 10
    print(a in (10,2,9,9))
    print(a not in (10,2,9,9))

其他的增刪改是不行的,tuple是不可變的尉辑,個數(shù)和元素都不能變

練習:輸入1-7的數(shù)字帆精,對應輸入是星期幾。如:輸入1隧魄,就輸出‘星期一’卓练,輸入7就輸出‘星期日’

    num1 = int(input('請輸入1-7中任意數(shù)字:'))
    tuple2 = ('星期一','星期二','星期三','星期四','星期五','星期六','星期日')
    print(tuple2[num1-1])
    # 注意:不要亂加條件,或者運行過程购啄。

二十三襟企、字典

字典是一個容器類的數(shù)據(jù)類型,以鍵值對(key:value)的形式來存儲數(shù)據(jù)狮含。
特點:字典是可變的(說明可以增刪改查)顽悼,但是是無序的(不能使用下標改變元素)。
鍵值對:以鍵:值的形式存在几迄。我們真正要存的是值蔚龙。
值可以是任何類型的數(shù)據(jù);鍵理論上只能是不可變的數(shù)據(jù)類型的數(shù)據(jù)映胁,在實際開發(fā)中一般用字符串

1.定義/聲明一個字典(dict)

    dict1 = {'name':'羅浩','age':18} # 聲明了一個字典對象木羹,存了兩個鍵值對
    dict2 = {'score':100,10:'aaa',(1,3):[10,23]}
    print(dict2)
    
    # dict3 = {[10,12]:'abc'}
    # print(dict3)
    # 鍵不能是可變的,報錯:TypeError: unhashable type:'list'

聲明一個字典解孙,存小明的姓名坑填、年齡、成績弛姜、顏值

    dict4 = {'name':'小明','age':18,'score':100,'face':90}
    print(dict4)

2.字典的查增刪改

a.查

1) 通過key去獲取值

格式:字典名[key值]

    print(dict4['age'])
    # print(dict4['abc']) 字典中沒有這個鍵脐瑰,報錯: KeyError:'abc'
2) 通過get方法獲取值

格式:字典名.get(key)
什么時候用?獲取字典中廷臼,不確定key對應的鍵值對是否存在的時候苍在,就使用get方法

    print(dict4.get('name'))
    print(dict4.get('abe')) #結果是None
    # None:python中的一個特殊值,表示沒有中剩,類似C中的NULL

練習:獲取字典中的‘grade’對應的值忌穿,如果grade不存在就打印不存在,否則出值

    str1 = dict4.get('grade')
    if str1 == None:
        print('不存在')
    else:
        print(str1)
3)遍歷字典

注意:字典沒有像列表的切片结啼,要取多個只能用遍歷字典
直接遍歷字典拿到的是字典所有的key值掠剑,要拿值的話就通過key來做

    dict4 = {'a':1,'b':2,'c':3}
    for key in dict4:
        print(key,dict4[key])



    print(dict4.items())
    for (key,value) in dict4.items():
        print(key,value)
    # 同時拿到key和value,但不推薦,因為在獲取鍵值對前郊愧,需要有轉換操作朴译,計算機會消耗太多的cpu井佑。

b.修改

通過Key去拿到對應的元素,然后重新賦值

    dict4 = {'a':1,'b':2,'c':3}
    dict4['a'] = 10
    print(dict4)
  • 練習:將上面的字典中所有的值變?yōu)樵瓉淼娜?

      dict4 = {'a':1,'b':2,'c':3}
      for key in dict4:
          dict4[key] *= 3
      print(dict4)
    

c.增加

通過key取值眠寿,然后賦值(如果這個key不存在躬翁,就是添加鍵值對。如果key存在盯拱,就是修改這個Key對應的值)
由此可知:字典里面key一定是唯一的盒发,而且不可變的。如果一個key寫出了兩個值狡逢,那么只有最后那個的值有意義宁舰,其他的都被銷毀。

練習:增加鍵值對:'d':4

    dict3 = {'a':1,'b':2.5,'c':False,'d':[1,2,3]}
    dict3['d'] = 4
    print(dict3)

    dict5 = {}
    dict5['name'] = '張山'
    dict5['color'] = 'red'
    dict5['color'] = 'green'
    print(dict5)

d.刪除

(刪除的是鍵值對奢浑,一個被銷蛮艰,另一個也會消失)
a.del語句
格式:del 字典[key]

    dict1 = {'a':1,'b':2.5,'c':False,'d':[1,2,3]}
    del dict['b'] # 刪除‘b’對應的鍵值對
    print(dict1)

b.pop()方法
格式:字典.pop(key)

    dict1.pop('a')
    pirnt(dict1,result)

    dict1 = {'a':1,'b':2.5,'c':False,'d':[1,2,3]}
    dict1.popitem() #popitem方法:隨機刪除(取出)一個元素


    dict1 =   {'a':1,'str':'string','b':2.5,'c':False,'d':[1,2,3]}

練習:將字典中,值為字符串的全部刪除

    for key in dict1.copy():
        num = dict1[key]
        if isinstance(dict2[key],str):
            dict1.pop(key)
    print(dict1)

3.字典的方法和運算符計算

a.keys和values方法

keys:獲取字典中所有的key
values:獲取字典中所有的值

    dict1 = {'a':1,'b':2,'c':3}
    print(dict.keys())
    print(dict1.values())

b.update方法

字典.update(字典2):用字典2中的元素去更新字典1中的元素(如果字典2中的鍵值對字典沒有雀彼,就直接添加壤蚜。有的話就修改)

    dict1.update({'a':1,'b':2.5,'c':False,'d':[1,2,3]})
    print(dict1)

c.in 和 not in

判斷字典中是否有指1定的key

    print('a' in dict1)
    print(100 in dict1)

二十四、集合

1.概述

集合也是一種容器類型
特點:無序的
元素的值是唯一的(不能重復)
數(shù)據(jù)存取是通過{}去存儲元素徊哑,多個元素之間用逗號隔開袜刷。

聲明一個集合

    set1 = {1,2,3,4,1,10} # 結果是:{1,2,3,4,10}
    print(set1)
    # 將其他數(shù)據(jù)轉換為集合的話,自帶去重功能
    # 將字符串轉換成集合
    set2 = set('abcdefjssbb')
    print(set2)

常用的是:各種數(shù)據(jù)的相互轉化

將列表轉換成集合(當然元組也可以)

    set3 = set([1,2,3,4,5,6,6,7])
    print(set3)

將字典轉換成集合(是將字典的key取出來作為集合的元素)

    set4 = set({'a':1,'b':2,'c':3})
    print(set4)

2.集合的查增刪

a.查

在集合中不能單獨獲取某一個元素或部分元素实柠,只能通過遍歷的方式去獲取每一個元素水泉。
練習:將字符串str1 = 'abdaadhjkjjhks'去重

    str1 = 'abdaadhjkjjhks'
    set1 = set(str1)
    str2 = ''
    # 遍歷集合
    for x in set1:
        str2 += x
    str1 = str2
    print(str1)
    # 注意:順序是不能控制的

b.增加

1)通過update增加:集合1.update(集合2):將集合2中的元素添加到集合1中善涨。

    set1 = set('123456')
    set2 = set('abcd1')
    set1.update(set2)
    print(set1)

2)add:集合.add(元素):將指定的元素添加到指定的集合中窒盐。

    set1.add('aaa')
    print(set1)

c.刪除

集合.remove(元素):將指定的元素從集合中刪除,如果不存在則報錯钢拧。

    set1.remove('1')
    print(set1)

3.集合的數(shù)學運算

python中的集合除了擁有作為容器相關的操作以外蟹漓,還擁有數(shù)學中集合的相關操作

a.判斷包含關系:>=,<=

    set1 = set('abczef')
    set2 = set('abcg')

集合1>=集合2:判斷集合1中是否包含集合2,結果是布爾值

    print(set1 >= set2)

集合1 <= 集合2:判斷集合2中是否包含集合1

    print(set1 <= set2)

b.|,&,-,^

    set1 = set('123456')
    set2 = set('456789')

| :求并集,在兩個集合中所有的元素

    print(set1 | set2)

& :求交集,兩個集合都有的元素

    print(set1 & set2)

-:在集合1中但是不在集合2中的所有元素

    print(set1 - set2)

^:獲取集合1和2中源内,除了公共部分以外的所有的元素

    print(set1 ^ set2)

c.copy

將set1中所有的元素取出來葡粒,創(chuàng)建一個新的集合。

    print(set1.copy())

什么時候用集合膜钓?
功能涉及到數(shù)學集合相關的操作的時候嗽交,就要想到用集合。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颂斜,一起剝皮案震驚了整個濱河市夫壁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沃疮,老刑警劉巖盒让,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梅肤,死亡現(xiàn)場離奇詭異,居然都是意外死亡邑茄,警方通過查閱死者的電腦和手機姨蝴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肺缕,“玉大人左医,你說我怎么就攤上這事⊥荆” “怎么了炒辉?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泉手。 經(jīng)常有香客問我黔寇,道長,這世上最難降的妖魔是什么斩萌? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任缝裤,我火速辦了婚禮,結果婚禮上颊郎,老公的妹妹穿的比我還像新娘憋飞。我一直安慰自己,他們只是感情好姆吭,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布榛做。 她就那樣靜靜地躺著,像睡著了一般内狸。 火紅的嫁衣襯著肌膚如雪检眯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天昆淡,我揣著相機與錄音锰瘸,去河邊找鬼。 笑死昂灵,一個胖子當著我的面吹牛避凝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眨补,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼管削,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撑螺?” 一聲冷哼從身側響起含思,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎实蓬,沒想到半個月后茸俭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吊履,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年调鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了艇炎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡腾窝,死狀恐怖缀踪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虹脯,我是刑警寧澤驴娃,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站循集,受9級特大地震影響唇敞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咒彤,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一疆柔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镶柱,春花似錦旷档、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至故觅,卻和暖如春厂庇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逻卖。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工宋列, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昭抒,地道東北人评也。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像灭返,于是被迫代替她去往敵國和親盗迟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 〇熙含、前言 本文共108張圖罚缕,流量黨請慎重! 歷時1個半月怎静,我把自己學習Python基礎知識的框架詳細梳理了一遍邮弹。 ...
    Raxxie閱讀 18,959評論 17 410
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,104評論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 29,393評論 8 265
  • 1.基本使用 1.1 數(shù)據(jù)類型 常用數(shù)據(jù)類型 Common Data Types 其他類型 Others 1.2 ...
    suwi閱讀 1,356評論 0 3
  • 一、劃分計劃: 1.搜索意向來劃分計劃 2.遵循哪些詞用于引流与纽,哪些詞是用于跟同行搶客戶 3.搜索這一類關鍵詞的客...
    567360ff1119閱讀 812評論 0 0