python 將這種資料型別叫做 「dict」,有的語言裡它的名稱是 「hash」。
這兩種名字都會用到,不過這並不重要,重要的是它們和列表的區別。你看,針對列表你可以做這樣的事情:
>>>你可以使用數字作為列表的索引,也就是你可以通過數字找到列表中的元素。而things=[
'a',
'b',
'c',
'd']
>>>
things[1
]b>>>
things[1
]='z'>>>
things[1
]z>>>
things
['a', 'z', 'c', 'd']
>>>
dict
所作的,是讓你可以通過任何東西找到元素,不只是數字。是的,字典可以將乙個物件和另外乙個東西關聯,不管它們的型別是什麼,我們來看看:
>>>stuff
=>>>
stuff
['name'
]zed
>>>
stuff
['age']36
>>>
stuff
['height']74
>>>
stuff
['city']=
"san francisco"
>>>
stuff
['city'
]san francisco
>>>
你將看到除了通過數字以外,我們還可以用字串來從字典中獲取 stuff
,我們還可以用字串來往字典中新增元素。當然它支援的不只有字串,我們還可以做這樣的事情:
>>>stuff[1
]="wow"
>>>
stuff[2
]="neato"
>>>
stuff[1
]wow
>>>
stuff[2
]neato
>>>
stuff
>>>
在這裡我使用了兩個數字。其實我可以使用任何東西,不過這麼說並不準確,不過你先這麼理解就行了。
當然了,乙個只能放東西進去的字典是沒啥意思的,所以我們還要有刪除物件的方法,也就是使用 del
這個關鍵字:
>>>delstuff
['city'
]>>>
delstuff[1
]>>>
delstuff[2
]>>>
stuff
>>>
接下來我們要做乙個練習:
cities=cities
['ny']=
'new york'
cities
['or']=
'portland'
deffind_city
(themap
,state
):if
state
inthemap
:return
themap
[state
]else
:return
"not found."
# ok pay attention!
cities
['_find']=
find_city
while
true
"state? (enter to quit)"
,state
=raw_input
("> ")if
notstate
:break
# this line is the most important ever! study!
city_found
=cities
['_find'
](cities
,state
city_found
這裡是我們要討論的**:
cities['_find']=
find_city
city_found
=cities
['_find'
](cities
,state
)
你要記住乙個函式也可以作為乙個變數,``def find_city`` 比如這一句建立了乙個你可以在任何地方都能使用的變數。在這段**裡,我們首先把函式 find_city
放到叫做 cities
的字典中,並將其標記為 '_find'
。 這和我們將州和市關聯起來的**做的事情一樣,只不過我們在這裡放了乙個函式的名稱。
好了,所以一旦我們知道 find_city
是在字典中 _find
的位置,這就意味著我們可以去呼叫它。第二行**可以分解成如下步驟:
python 看到 city_found
= 於是知道了需要建立乙個變數。
然後它讀到 cities
,然後知道了它是乙個字典
然後看到了 ['_find']
,於是 python 就從索引找到了字典 cities
中對應的位置,並且獲取了該位置的內容。
['_find']
這個位置的內容是我們的函式 find_city
,所以 python 就知道了這裡表示乙個函式,於是當它碰到 (
就開始了函式呼叫。
cities,
state
這兩個引數將被傳遞到函式 find_city
中,然後這個函式就被執行了。
find_city
接著從 cities
中尋找 states
,並且返回它找到的內容,如果什麼都沒找到,就返回乙個資訊說它什麼都沒找到。
python find_city
接受返回的資訊,最後將該資訊賦值給一開始的 city_found
這個變數。
我再教你乙個小技巧。如果你倒著閱讀的話,**可能會變得更容易理解。讓我們來試一下,一樣是那行:
state
和 city
是...
作為引數傳遞給...
乙個函式,位置在...
'_find'
然後尋找,目的地為...
cities
這個位置...
最後賦值給 city_found.
還有一種方法讀它,這回是「由里向外」。
找到表示式的中心位置,此次為 ['_find']
.逆時針追溯,首先看到的是乙個叫 cities
的字典,這樣就知道了 cities 中的 _find
元素。上一步得到乙個函式。繼續逆時針尋找,看到的是引數。
引數傳遞給函式後,函式會返回乙個值。然後再逆時針尋找。
最後,我們到了 city_found
= 的賦值位置,並且得到了最終結果。
python裡面的數學
一.基本運算子 1.算數運算 2.比較運算 特殊情況 不等於 新版本不支援 不等號 3.賦值運算 4.邏輯運算 not 非 非真即假,非假即真.and 並且 左右兩端同時為真,結果才為真.or 或者 左右兩端有乙個為真,結果就是真.true 真 1 判斷的結果 false 假 0 判斷的結果 pri...
python裡面的工廠模式
工廠模式 工廠模式 是乙個在軟體開發中用來建立物件的設計模型。使用工廠模式的應用場景 當不知道使用者想要建立什麼樣的物件時可以使用?工廠模式。乙個手機工廠模式 class phone object defpicture self print 照相 def call self print 打 clas...
python裡面的functools函式
在使用之前要先導入functools庫,偏函式是在一次呼叫之後再次呼叫時相應的引數就不用再傳了。如上圖所示 在第一次呼叫偏函式之後之前傳進去的值1,2,3一直在函式裡面。如果乙個函式 def note func note function def print note something retur...