【Python學習/教程】-python列表

安裝python

windows在 python官網下載python 

https://www.python.org/downloads/release/python-360/

下載下來是.exe可執行文件,之後一路下一步就安裝好了。

pyton自帶一個編譯器IDLE,打開IDLE就可以直接編寫Python程序了。


列表

列表介紹

python中使用列表:    

movies=["The Holy Grail","The Life of Brian","The Meaning of Life"]
* 在python中單引號和雙引號都可以創建字符串。對此只有一個規則,如果字符串前面使用了某個引號,那麼字符串後面必須使用同樣的引號,不能夠混合使用引號。

* pyton大小寫敏感
  movies和MOVIES是兩個不同的名字

這裏可以看得出來python使用列表不需要爲列表聲明類型。對於python來說,標誌符只是名字,可以指示某個類型的數據對象。

列表存儲

列表就像是數組一樣,在python中創建一個列表時,解釋器會在內存中創建一個類似數組的數據結構來存儲數據,數據項自下而上堆放(形成一個堆棧)。類似於其他語言中的數據技術,堆棧中的第一個編號爲0,第二個編號爲1,以此類推


The Meaning of Life      2

The Life of Brian            1

The Holy Grail                0(python從0開始計數)

操作列表

像數組一樣,可以使用標準的中括號偏移量的方法訪問

print(movies[1])

在列表尾部追加一個數據項

movies.append("Jurassic Park")
彈出列表尾部最後一個數據項
 movies.pop()

在列表尾部增加一個數據項集合

movies.extend(["Jurassic Park 2","Jurassic World"])

在列表中找到並刪除一個特定的數據項

movies.remove("Jurassic Park 2")

在某個特定的位置前面增加一個數據項

movies.insert (0,"Jurassic Park 2")

列表中混合不同類型的數據

Python列表中可以包含混合類型的數據。在同一個Python列表中混合存放字符串和數字是允許的(任意類型的數據混合都是允許的)。

我們現在要做的就是將

movies=["The Holy Grail","The Life of Brian","The Meaning of Life"]

變爲

["The Holy Grail",1975,"The Life of Brian",1979,"The Meaning of Life",1983]

不重新賦值使用上面的操作函數如何實現呢?

答案1:

movies.insert(1,1975)
movies.insert(3,1979)
movies.insert(5,1983)

答案2:

movies.insert(1,1975)
movies.insert(3,1979)
movies.append(1983)

兩種答案比起來答案2更好一點,當然了這是在不允許重新給列表賦值的基礎上,其實對於這種小的淚飆來說,重新賦值的方法是更可取的,並且這樣做還省去了不必要的計算。

處理列表數據

for循環循環迭代列表

for  目標標識符 in 列表 :
列表處理代碼(列表處理代碼被Python程序員稱爲“組”(suite))
for movie in movies:
	print(movie);

這裏相當於JAVA的增強式for循環,目標標識符相當於一個變量,名字可以隨便起,之後每次循環這個變量都會獲取列表中的當前循環的值。

while循環

 count =0
 while count<len(movies):
	print(movies[count])
	count=count+1

列表中存儲列表

首先重新定義下列表

movies=["The Holy Grail",1975,"The Life of Brian",1979,
["Graham Chapman",
["Michael Paline","John Cleese","Terry Gilliam","Eric Idle","Terry Jones"]
]]

之後我們嘗試的打印print(movies[4][1][3]) 出來的結果是Eric Idle

如何使用for循環迭代列表中的列表?

    如果直接使用上面的for循環會出現以下情況:

for movie in movies:
	print(movie)

結果:

The Holy Grail
1975
The Life of Brian
1979
['Graham Chapman', ['Michael Paline', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]
這裏將列表中的列表直接打印出來了,那麼我們要怎樣迭代列表中的列表呢?

首先在列表中查找列表

每次處理列表中的一項時,都要查看這一項本身是不是另一個列表,如果這一項是另一個列表,那麼處理外列表中的下一項之前,先要處理這個列表。Python中確定何時做什麼可以採用我們熟悉的if....else...模式

if  某個條件滿足  :

   true組 

else:  

   false組

   有了if else要怎麼知道這個數據類型是不是列表呢?python中內置了一個BIF Erlang 內建的函數(built-in functions),isinstance()它允許檢查某個特定標識符是否包含某個特定類型的數據

name=['Michael','Terry']
isinstance(name,list)

這裏控制檯會顯示true,這裏判斷name是不是list類型的。


name1=len(name)
isinstance(name1,list)

這裏控制檯顯示False


有了isinstance BIF我們應該如何去顯示嵌套列表呢?

movies=["The Holy Grail",1975,"The Life of Brian",1979,
["Graham Chapman",
["Michael Paline","John Cleese","Terry Gilliam","Eric Idle","Terry Jones"]
]]

答案:

for movie in movies:
if isinstance(movie,list):
for m1 in movie :
print(m1)
else:
print(movie)

輸出結果還是不盡人意,最後一個列表還是沒顯示出來,但是我們顯示了第二層列表,如果按照此種方式寫下去第三層列表也是能夠循環顯示出來的。但是這樣的話就會顯得代碼特別臃腫而且可讀性還差,在這種情況下如果我要是想在最裏層列表中再加一層列表呢?

The Holy Grail
1975
The Life of Brian
1979
Graham Chapman
['Michael Paline', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']

我們應當創建一個函數!

Python中的函數是一個命名的代碼組,如果需要還可以有一個參數表

到用def語句定義Python函數,爲函數提供一個函數名,並在括號裏指定一個參數表,參數表也可以爲空

 def 函數名 (參數):

    函數代碼組


我們已經學會了如何定義函數,那麼我們應該如何簡化我們的代碼呢?

 

def print_lol(the_list):

     for movie in the_list:
        if isinstance(movie,list):

           print_lol(movie)

        else :

            print(movie)

之後我們直接調用

print_lol(movies)

得出結果

The Holy Grail
1975
The Life of Brian
1979
Graham Chapman
Michael Paline
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
可以看出我們這裏使用了遞歸函數。

 







本文章案例以及內容來自Head first Python,由紫極嵐整理編寫


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章