安裝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,由紫極嵐整理編寫