Python基礎教程筆記 第二章

本章的名字雖然叫列表和元組,但是本章講的最多的是列表,元祖指講了很少的一部分。因爲元組和列表很多方面都是一樣的。

 

  列表和元組的區別:列表可以被修改,元祖不可以被修改。

 

  python包含的6種內建序列:列表、元組、字符串、Unicode字符串、buffer對象、xrange對象。

 

  內建函數返回的是元組,因爲元組是不可以被修改的。

 

  列表的形式是[] ,元素之間通過逗號分隔。

 

  序列(例如列表和元組)和映射(例如字典)是兩類主要的容器。序列中的每個元素都有自己編號,而映射中的每個元素則有一個名字(也稱爲建)。

集合(set)既不是序列也不是映射類型

 

通用的序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multiply)、迭代(iteration)

  迭代(iteration):依次對序列中的每個元素重複執行某些操作。

      索引(indexing): 序列中所有元素都是有編號的,編號都是從0開始的。使用複數索引時,python會從右邊,也就是最後一個元素開始計數,最後一個元素的位置爲-1 。

例:

>>>'hello'[1]    

>>> 'e'

>>> input('year:')[3]

year:2016

>>> '6'         

python3用input代替了python2中的raw_input

  分片(slicing):分片是通過冒號隔開兩個索引來實現。第一個索引的元素包含在分片內,第二個不包含。

num[第一個索引:第二個索引:步長]

例如:

>>>num = [1,2,3,4,5,6]

>>>num[1:4:2]

[2,4]

第一個索引、第二個索引和步長都可以爲負數。步長不能爲0,爲0的時候不執行。

當使用一個負數爲步長的時候,必須讓開始點(開始索引),大於結束點。

  加(adding):列表和字符串無法連接在一起。只有兩種相同類型的序列才能進行連接操作。

例如:[1,2,3] + [4,5,6]     結果爲[1,2,3,4,5,6]

        'hello ' + 'world'      結果爲 'hello world'

       [1,2,3] + 'hello'    錯誤

  乘(multiply):用數字x乘以一個序列會生成新的序列,而新的序列中,原來的序列將會被重複x次

例如:'he' * 5         'hehehehehe'

         [1] * 5         [1,1,1,1,1] 

[]表示空列表,裏面什麼東西都沒有

None是一個python內建值,它確切的含義是“這裏什麼都沒有”

[None] *  5       [None,None,None,None,None]

python3中的//表示整除,/表示除,無論值是整型還是浮點型。python2中默認的/表示整除。

 

成員資格:in

爲了檢查一個值是否在序列中,可以使用in運算符。

例如:>>>st = ['as','df','gh']             (列表成員也可以是列表,這樣查看的時候是查看一個列表是否在該列表中)

>>>'as' in st

True

>>>'bb' in st

False

>>> 'st' in 'string'

True

 

長度、最小值、最大值:len()、min()、max()

  len()、min()、max()屬於內建函數。

  len()返回序列中所包含的元素個數。

  min()和max()返回序列中的最小和最大的元素。

例如:>>> num = [3,4,2,5,1]

>>>len(num)

5

>>>max(num)

5

>>>min(num)

1

>>>max(2,3,5,1)

5

max()和min()的參數不僅可以是一個序列,還可以以多個數字直接作爲參數。

 

列表:

list函數:可以將所有序列轉換成列表。

例如:>>>list('hello')

['h','e', 'l', 'l', 'o']

注意:list使用於所有類型的序列,不只是字符串。

基本列表操作:

列表可以使用適用於序列的標準操作,例如索引、分片、鏈接、乘法。

元素賦值:可以直接用下標的方法進行賦值,不能對一個不存在的元素進行賦值。 x = [1,2,3]   x[1] = 5    結果x=[1,5,3],賦值索引的下標不能超過2,超過2爲不存在的元素。

刪除元素:是用del語句來實現。del x[1]   結果x=[1,3] 。  del可以用於很多變量,不僅是列表,字典也是可以的。

分片賦值:它可以使程序一次爲多個元素賦值。

  使用分片時可以時使用與原序列不等長的序列將分片替換。

  >>> name = list('perl')

  >>> name[2:] = list('python')

  >>> name

  ['p','e','p','y','t','h','o','n']

  分片賦值可以在不需要替換任何元素的情況下插入新的元素

  >>> num = [1,5]

  >>> num[1:1] =  [2,3,4]

  >>> num

  [1,2,3,4,5]

  與之類似,分片也可以刪除元素

  >>> num[1:4] = []

  >>> num

  [1,5]

當然,上述操作也可以加上步長。

 

列表方法:append、count、extend、index、insert、pop、remove、reverse、sort、高級排序。

  append:用於在列表末尾追加新的對象。 lst = [1,2,3]   lst.append(4)      結果lst = [1,2,3,4] ,   列表本身被修改。

  count:統計某個元素在列表中出現的次數。[[1,2], [1,1],1,1,[2,3]].count([1,1])   結果爲1, [[1,2], [1,1],1,1,[2,3]].count(1) 結果爲2

  extend:可以在列表的尾部一次性追加另外一個序列中的多個值。a=[1,2,3] b=[4,5,6] a.extend(b)   結果a = [1,2,3,4,5,6] 。列表本身的值被修改。如果使用+號連接兩個列表,也可以得到相同的值,但是列表本身沒有被修改,只是返回值是相同的。a + b 返回的結果是[1,2,3,4,5,6], 但是a依舊是[1,2,3]

   index:從列表中找出某個值第一個匹配項的索引位置。當沒有這個元素時會發生異常。st = ['qw','er','er','er','sd']   st.index('er')  結果爲1

  insert:用於將對象插入到列表中。st.insert(2,'a')  結果st = ['qw','er','a','er','er','sd']   , 列表本身進行的修改。

  pop:會移除列表中的一個元素,默認是最後一個元素,並且返回這個元素的值。x=[1,2,3,4] x.pop() 結果4     x.pop(0) 結果 1 。pop是唯一一個既能修改列表又能返回元素值得列表方法。

  remove:用於移除列表中某個值的第一個匹配項。st.remove('er') 結果st = ['qw','a','er','er','sd'] 。該方法是一個沒有返回值的原位置改變方法。

  reverse:將列表中的元素反向存放。a.reverse() a=[3,2,1]。 該方法也改變了列表但是不返回值(就像remove和sort)

  sort:該方法用於在原位置對列表進行排序。原來的列表被改變,不是簡單的返回一個已經排序的列表副本。該方法沒有返回值。

>>> x = [3,1,2,4]

>>> x.sort()  ;  x

[1,2,3,4]

>>> y = x.sort()           錯誤,該方法沒有返回值。y的值是None

如果只是想獲得一個已排序的列表副本,原列表仍然保留,可以只用下面的方法:

>>> y = x[:]           這裏不能簡單的使用y=x 來賦值,這樣是令y也指向x的值,x改變時y也隨之改變。x[:]是包含了x所有元素的分片,這是一種很有效率的賦值整個列表的方法

>>> y.sort()            使用副本來排序,不會修改原始的列表。

也是使用sorted函數:

>>> y = sorted(x)

此時,y的值爲[1,2,3,4] ,x的值仍爲[3,1,2,4]

sorted 函數不僅可以用於列表,還可以用於任何序列,總是返回一個列表:

>>> sorted('python')

['h', 'n', 'o', 'p', 't', 'y']

  高級排序:sort方法有兩個可選的參數key和reverse.

如果想使排序結果爲逆序,可以調節參數x.sort(reverse = True)即可。

如想像根據長度來排序,可以使用len 即 x.sort(key = len)

 

 

元組:不可變序列

  如果你使用逗號隔開了一些值,那麼你就自動創建了一個元組。

  >>> 1,2,3

  (1,2,3)

  元組大部分是通過圓括號括起來的,空元組可以用沒有包含內容的兩個括號表示()。

  包含一個值得元組,不是簡單的一個值就可以,而是要在這個值後面加上一個逗號。

  >>> 3 * (42)

  126

  >>> 3 * (42,)

  (42, 42, 42)

 

tuple函數:可以將一個序列作爲參數,轉換成元組。如果參數是元組,那麼該參數會被原樣返回。

  >>> tuple([1,2,3])

  (1,2,3)

  >>> tuple('abc')

  ('a', 'b', 'c')

  >>> tuple((1,2,3))

  (1,2,3)

 

發佈了32 篇原創文章 · 獲贊 17 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章