Python基礎(chǔ)07-列表(list)

1. 概念

  • 有序的哀墓,可變的集合:可以放不同類型元素
  • list = [1, True, “name”, [2, 3, 4]]

2. 定義

2.1 列表生成式

* range(stop):[0, 1, 2, … , stop -1]
* range(start, stop[,step]):[start, start + step, start + 2*step … , stop-1]佳吞,step 默認值為1

2.2 列表推導(dǎo)式

  • [表達式 for 變量 in 列表]

  • [表達式 for 變量 in 列表 if 條件]

  • [表達式 for 變量 in 列表 for 變量2 in 列表2]:循環(huán)嵌套

      * nums = [1, 2, 3, 4, 5]
      * resultList = [num ** 2 for num in nums] => [1, 4, 9, 16, 25]
      * resultList = [num ** 2 for num in nums if num % 2 != 0] => [1, 9, 25]
      * resultList = [num ** 2 for num in nums for num2 in nums] => [1,1,1,1,1,4,4,4,4,4,9,9,9,9,9,16,16,16,16,16,25,25,25,25,25]
    

2.3 注意點

* python3 在真正使用前不會立即生成 list

3. 操作

3.1 增

* .append(object)
* .insert(index, object)
* .extend(iterable):往列表中, 擴展另外一個可迭代序列。和append之間的區(qū)別:extend可以算是兩個集合的拼接皆疹,append是把一個元素, 追加到一個集合中
* 乘法:["a"] * 3 =》['a', 'a', 'a']
* 加法:["a"] + ["b", “c”] =》 ["a", "b", "c"] :和extend區(qū)別,只能列表類型和列表類型相加

3.2 刪

  • del 語句

    * del nums:可以刪除一個指定元素(對象)
    * 可以刪除整個列表缩幸, 刪除一個變量髓堪,也可以刪除某個元素
    
  • pop

    * 移除并返回列表中指定索引對應(yīng)元素,返回被刪除的元素
    * l.pop(index=-1)
    
  • remove

    * 移除列表中指定元素
    * l.remove(object)
    
  • 注意

    * 會直接修改原數(shù)組
    * 如果元素不存在搞坝,會報錯
    * 若果存在多個元素丈牢,則只會刪除最左邊一個
    * 注意循環(huán)內(nèi)刪除列表元素帶來的坑
    

3.3 改

  • names[index] = 666

3.4 查

  • 獲取單個元素
    • num = nums[3] 或 num = nums[-1] 最后一個元素 或 num = nums[-2]倒數(shù)第二個
  * 獲取元素索引,index(object)
  * 都是從左到右判斷瞄沙,一旦 object 相等,則輸出該 object 的索引
  * 注意有多個相同的 object 的列表 獲取相同 index 坑
  • 獲取指定元素個數(shù)慌核,count(object)

  • 獲取多個元素

    * 也就是切片距境,與字符串切片同理
    * pic = nums[1:3:]
    * pic = nums[::-1]:反轉(zhuǎn)數(shù)組
    

3.4 遍歷

  • 普通對象遍歷

    * for num in nums:
    * 獲取索引不容易,需要自己添加一個計算變量進行自增計算
    
  • 自造索引遍歷

    * for index in range(len(list)):
    * 方便獲取索引垮卓,通過索引獲取元素 nums[index]t
    
  • 通過枚舉對象

    * enumerate(sequence[, start = 0]), 拆成多個元祖的集合垫桂,然后對單個元祖解包
    * for idx, val in enumerate(values):
    * for idx, val in enumerate(values, 3):
    
  • 使用迭代器遍歷

    * 迭代器
    * 迭代
        * 訪問集合的一種方式
        * 按照某種順序逐個訪問集合中的每一項
    * 可迭代對象
    

3.5 判斷

  • 能作用于 for in

    * 判斷方法
        * import collections
        * isinstance(obj, collections.Iterable)
    

3.6 比較

  • in / not in

  • cmp(objc1, objc2 ),內(nèi)建函數(shù)粟按,python3后廢棄

          * objc1 < objc2 結(jié)果 -1
          * objc1 == objc2 結(jié)果 0
          * objc1 > objc2 結(jié)果 1
    
  • python3 使用 >诬滩,<,== 進行比較

  • 以上比較都是從左到右逐一比較的灭将,即“ac” > “ab”疼鸟,[1, 2, 4] > [1, 3, 6]

  • 兩邊比較對象個數(shù)可以不等 [2, 4] > [2, 3, 5]

3.7 排序

  • sorted(iterable, key = None, reverse = False)

      * 內(nèi)建函數(shù),可以對所有可迭代對象進行排序
      * 返回值時一個排序好的列表
      * 原對象不改變
          * s = [("sz", 18),  ("sz2", 16), ("sz1", 17), ("sz3", 15)
          * def getKey(x):
          * return x[1]
          * result = sorted(s, key=getKey, reverse=True):以元組第一個值為 key庙曙,降序排列
          * print(result)
    
  • 列表對象方法:list.sort(key = None, reverse = False)

      * 原對象被改變空镜,方法沒有返回值
    

3.8 亂序

    * 無返回值,直接修改 list
    * import random
    * list = [1, 2, 3, 4, 5]
    * random.shuffle(l)

3.9 反轉(zhuǎn)

  • list.reverse()

      * 無返回值,直接修改 list
      * 使用吴攒,切片反轉(zhuǎn)
    
  • list[::-1]

      * 有返回值张抄,原列表不變
    

4 迭代器

4.1 作用

  • 是可以記錄遍歷位置的對象
  • 從第一個元素開始,往后通過 next()函數(shù)洼怔,進行遍歷
  • 只能往后署惯,不能往前

4.2 注意

  • 迭代器也是可迭代對象,所以也可以作用于 for in

4.3 使用迭代器優(yōu)點

  • 僅在迭代到該元素時才處理

    * 在此之前镣隶,元素可以不存在
    * 在此之后极谊,元素可以被銷毀
    * 特別適合用于遍歷一些巨大的或無限的集合 - 菲波那切數(shù)列
    
  • 提供了統(tǒng)一的訪問集合接口

    * 可以把所有的可迭代對象,轉(zhuǎn)換成迭代器進行使用
          * iter(Iterable)
          * iter(str)
          * iter(list)
          * iter(tuple)
          * iter(dict)
    

4.4 迭代器使用

  • 使用 next()函數(shù)矾缓,從迭代器中獲取下一個對象怀酷,從第一個元素開始,迭>代完后再調(diào)用 next 函數(shù)會報錯說嗜闻,迭代結(jié)束
  • 因為迭代器比較常見蜕依,所以 python 中,可以直接作用于 for in
  • 內(nèi)部會自動調(diào)用迭代器對象的 next()函數(shù)
  • 會自動處理迭代完畢的錯誤

4.5 注意

  • 迭代器一般不能迭代多次
  • 迭代完畢后琉雳,再取值样眠,會報錯 - StopIteration
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翠肘,隨后出現(xiàn)的幾起案子檐束,更是在濱河造成了極大的恐慌,老刑警劉巖束倍,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件被丧,死亡現(xiàn)場離奇詭異,居然都是意外死亡绪妹,警方通過查閱死者的電腦和手機甥桂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邮旷,“玉大人黄选,你說我怎么就攤上這事∩艏纾” “怎么了办陷?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長律歼。 經(jīng)常有香客問我民镜,道長,這世上最難降的妖魔是什么险毁? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任殃恒,我火速辦了婚禮植旧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘离唐。我一直安慰自己病附,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布亥鬓。 她就那樣靜靜地躺著完沪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嵌戈。 梳的紋絲不亂的頭發(fā)上覆积,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音熟呛,去河邊找鬼宽档。 笑死,一個胖子當著我的面吹牛庵朝,可吹牛的內(nèi)容都是我干的吗冤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼九府,長吁一口氣:“原來是場噩夢啊……” “哼椎瘟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侄旬,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肺蔚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后儡羔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣羊,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年汰蜘,在試婚紗的時候發(fā)現(xiàn)自己被綠了仇冯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡鉴扫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澈缺,到底是詐尸還是另有隱情坪创,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布姐赡,位于F島的核電站莱预,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏项滑。R本人自食惡果不足惜依沮,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧危喉,春花似錦宋渔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薄嫡,卻和暖如春氧急,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背毫深。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工吩坝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哑蔫。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓钉寝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸳址。 傳聞我的和親對象是個殘疾皇子瘩蚪,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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

  • 〇、前言 本文共108張圖稿黍,流量黨請慎重疹瘦! 歷時1個半月,我把自己學習Python基礎(chǔ)知識的框架詳細梳理了一遍巡球。 ...
    Raxxie閱讀 18,959評論 17 410
  • Python 是一種相當高級的語言言沐,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機器碼...
    Python程序媛閱讀 1,908評論 0 3
  • 1. 作用 python中的list類似數(shù)組,python最常見的數(shù)據(jù)類型酣栈,可以存儲不同類型的數(shù)據(jù)险胰。 2. 操作 ...
    fada492daf5b閱讀 339評論 0 0
  • 據(jù)說,“雙11”大戰(zhàn)早就拉開帷幕了矿筝。打開某寶的頁面起便,從10月20日到11月11日當天,決定不讓你閑著窖维。光是搶紅包一...
    小悟62閱讀 332評論 0 2
  • 《命名》 文/六悅王 以消費者的名義命名禾蚕,充滿溫暖令宿;以產(chǎn)品實用性命名拖吼,簡單粗糙假勿;以流行趨勢命名,華而不實琳轿。關(guān)...
    六悅茗閱讀 190評論 0 0