摘要:,如何一個方法一使用方法二使用方法方法三使用方法,按升序或降序排列表示升序表示降序和會返回。而僅能刪除一個。使用方法可以避免這樣的錯誤導致程序出現(xiàn)。,在中,的方法返回的不再是。不過可以使用強迫它們組成一個。
Chapter 8 Lists and Dictionaries
1, list的concatenation 和 repetition 操作:
>>> [1, 2, 3] + [4, 5, 6] # Concatenation [1, 2, 3, 4, 5, 6] >>> ["Ni!"] * 4 # Repetition ["Ni!", "Ni!", "Ni!", "Ni!"]
2,list是mutable sequence,可以做in place assignment.
A, 單一賦值:
>>> L = ["spam", "Spam", "SPAM!"] >>> L[1] = "eggs" # Index assignment >>> L ["spam", "eggs", "SPAM!"]
B,用slice給多個item賦值
>>> L[0:2] = ["eat", "more"] # Slice assignment: delete+insert >>> L # Replaces items 0,1 ["eat", "more", "SPAM!"]
雖然[0:2]僅包含2個item,但是,重新賦值的時候可以賦給不止2個,或者少于2個,其實應該這樣認識slice assignment:
Step 1:將slice里面的items刪除;
Step 2:將要賦值的新的sublist插入。
所以刪除的item的個數可以和插入的item的個數不一致。
3,如何extend一個list?
方法一:使用slice assignment:
>>> L [2, 3, 4, 1] >>> L[len(L):] = [5, 6, 7] # Insert all at len(L):, an empty slice at end >>> L [2, 3, 4, 1, 5, 6, 7]
方法二:使用extend方法
>>> L.extend([8, 9, 10]) # Insert all at end, named method >>> L [2, 3, 4, 1, 5, 6, 7, 8, 9, 10]
方法三:使用append方法
>>> L = ["eat", "more", "SPAM!"] >>> L.append("please") # Append method call: add item at end >>> L ["eat", "more", "SPAM!", "please"]
4,sort()按升序或降序排列
L = [2, 3, 4, 1] L.sort() #表示升序 L [1, 2, 3, 4] L.sort(reverse = True) #表示降序 L [4, 3, 2, 1]
Sort和 append會返回None。所以把他們賦給其他變量,否則那個變量將變?yōu)镹one。
5,有一個sorted函數也可以做這樣的事情,并返回一個list:
>>> L = ["abc", "ABD", "aBe"] >>> sorted([x.lower() for x in L], reverse=True) # Pretransform items: differs! ["abe", "abd", "abc"]
6,reverse可以用來倒序:
>>> L [1, 2, 3, 4] >>> L.reverse() # In-place reversal method >>> L [4, 3, 2, 1] >>> list(reversed(L)) # Reversal built-in with a result (iterator) [1, 2, 3, 4]
7,index, insert, remove, pop, count
>>> L = ["spam", "eggs", "ham"] >>> L.index("eggs") # Index of an object (search/find) 1 >>> L.insert(1, "toast") # Insert at position >>> L ["spam", "toast", "eggs", "ham"] >>> L.remove("eggs") # Delete by value >> L ["spam", "toast", "ham"] >>> L.pop(1) # Delete by position "toast" >>> L ["spam", "ham"] >>> L.count("spam") # Number of occurrences 1
8, del函數不僅可以刪除一個item,還可以刪除一個section。
>>> L = ["spam", "eggs", "ham", "toast"] >>> del L[0] # Delete one item >>> L ["eggs", "ham", "toast"] >>> del L[1:] # Delete an entire section >>> L # Same as L[1:] = [] ["eggs"]
而remove僅能刪除一個item。
9,給某個section賦值一個空List,也就相當于刪除該section:L[i:j]=[]
10,dictionary使用key來index:
>>> D = {"spam": 2, "ham": 1, "eggs": 3} # Make a dictionary >>> D["spam"] # Fetch a value by key 2 >>> D # Order is "scrambled" {"eggs": 3, "spam": 2, "ham": 1}
11,dictionary的keys方法返回dictionary的所有key 值:
>>> len(D) # Number of entries in dictionary 3 >>> "ham" in D # Key membership test alternative True >>> list(D.keys()) # Create a new list of D"s keys ["eggs", "spam", "ham"]
#可以不用list()方法,因為在Python 2.x keys的值本來就是list
12,在dictionary中,給一個key賦值新的value:
>>> D {"eggs": 3, "spam": 2, "ham": 1} >>> D["ham"] = ["grill", "bake", "fry"] # Change entry (value=list) >>> D {"eggs": 3, "spam": 2, "ham": ["grill", "bake", "fry"]}
13, 刪除某個entry,通過key
>>> del D["eggs"] # Delete entry >>> D {"spam": 2, "ham": ["grill", "bake", "fry"]}
14,增加一個新的entry:
>>> D["brunch"] = "Bacon" # Add new entry >>> D {"brunch": "Bacon", "spam": 2, "ham": ["grill", "bake", "fry"]}
15,dictionary的values()方法返回dictionary的所有values
>>> D = {"spam": 2, "ham": 1, "eggs": 3} >>> list(D.values()) #可以不用list()方法,因為D.values()的值本來就是list [3, 2, 1]
16,dictionary的items()方法返回dictionary的所有key=value tuple,返回的是一個list。
>>> list(D.items()) [("eggs", 3), ("spam", 2), ("ham", 1)]
17,有時候不確定dictionary是否有某個key,而如果仍然有之前的index方法來獲取,可能引起程序error退出。使用get方法可以避免這樣的錯誤導致程序出現(xiàn)error。
如果沒有某個key,get會返回None,而如果不想讓程序提示None,可以在第二個參數填入想要輸出的內容,如下:
>>> D.get("spam") # A key that is there 2 >>> print(D.get("toast")) # A key that is missing None >>> D.get("toast", 88) 88
18,dictionary有一個update方法,可以將一個dictionary加入到另外一個dictionary中,將D2加入到D中。應該注意的是,如果它們有相同的keys,那么D中重復的key所對應的值將被D2的key所對應的值覆蓋。
>>> D {"eggs": 3, "spam": 2, "ham": 1} >>> D2 = {"toast":4, "muffin":5} # Lots of delicious scrambled order here >>> D.update(D2) >>> D {"eggs": 3, "muffin": 5, "toast": 4, "spam": 2, "ham": 1}
19,dictionary的pop方法,填入的參數是key,返回的值是value,被pop執(zhí)行的entry被移除出dictionary。
20,如何遍歷一個dictionary? 可以用for-in loop:
方法一: for key in D
方法二: for key in D.keys()
21, 如果想要根據value來獲得key,可以參考下面的例子:
D = {"spam": 2, "ham": 1, "egg": 3} E = {"spam": 4, "toast": 3, "hamburger": 5} D.update(E) #print D some_food = [key for (key, value) in D.items() if value == 3] print some_food
如上面斜體的表達式,將返回list。如果這個value對應多個key,則返回的list將有多個item,如果僅有一個key,那么這個list將只有一個值,此時可以用list[0]來將中括號去除。
22,作為key的值得類型可以是string、integer、float、tuple等不會改變的值, 用戶自己定義的object也能作為key,只要它們是hashable并且不會改變的。像list、set、dictionary等這些會變的type不能作為dictionary的key。
23,下面這個例子闡述了tuple類型的key在坐標問題中的作用:
>>> Matrix = {} >>> Matrix[(2, 3, 4)] = 88 >>> Matrix[(7, 8, 9)] = 99 >>> >>> X = 2; Y = 3; Z = 4 # ; separates statements: see Chapter 10 >>> Matrix[(X, Y, Z)] 88 >>> Matrix {(2, 3, 4): 88, (7, 8, 9): 99}
24,創(chuàng)建dictionary的幾個方法:
方法一:傳統(tǒng)的方法
{"name": "Bob", "age": 40} # Traditional literal expression
方法二:逐一賦值
D = {} # Assign by keys dynamically D["name"] = "Bob" D["age"] = 40
方法三:通過dict函數創(chuàng)建,注意,使用這種方法,key只能是string
dict(name="Bob", age=40) # dict keyword argument form
方法四:將key/value作為一個tuple,再用[]括起來,寫進dict()中,這種比較少用到
dict([("name", "Bob"), ("age", 40)]) # dict key/value tuples form
方法五:使用zip()函數
dict(zip(keyslist, valueslist)) # Zipped key/value tuples form (ahead)
方法六:使用fromkeys函數,很少用到
>>> dict.fromkeys(["a", "b"], 0) {"a": 0, "b": 0}
25,使用dictionary comprehensions來創(chuàng)建dictionary的例子:
25.1 別忘了冒號。。
>>> D = {x: x ** 2 for x in [1, 2, 3, 4]} # Or: range(1, 5) >>> D {1: 1, 2: 4, 3: 9, 4: 16}
25.2
>>> D = {c: c * 4 for c in "SPAM"} # Loop over any iterable >>> D {"S": "SSSS", "P": "PPPP", "A": "AAAA", "M": "MMMM"}
25.3
>>> D = {c.lower(): c + "!" for c in ["SPAM", "EGGS", "HAM"]} >>> D {"eggs": "EGGS!", "spam": "SPAM!", "ham": "HAM!"}
25.4
>>> D = {k:0 for k in ["a", "b", "c"]} # Same, but with a comprehension >>> D {"b": 0, "c": 0, "a": 0}
26,在Python 3.x中,dictionary的keys()方法返回的不再是list。而是類似像set一樣的結構。不過可以使用list()強迫它們組成一個list。
>>> D = dict(a=1, b=2, c=3) >>> D {"b": 2, "c": 3, "a": 1} >>> K = D.keys() # Makes a view object in 3.X, not a list >>> K dict_keys(["b", "c", "a"]) >>> list(K) # Force a real list in 3.X if needed ["b", "c", "a"]
它們具有交集、并集、等set所具有的運算:
>>> D = {"a": 1, "b": 2, "c": 3} >>> D.keys() & D.keys() # Intersect keys views {"b", "c", "a"} >>> D.keys() & {"b"} # Intersect keys and set {"b"} >>> D.keys() & {"b": 1} # Intersect keys and dict {"b"}
27,練習題:用兩種方法創(chuàng)建一個list,這個list包含5個0:
方法一:
[0,0,0,0,0]
方法二:
[0 for i in range(5)]
方法三:
[0] * 5
方法四:
用循環(huán)加append的方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38326.html
摘要:可以連接,可以重復可以將兩個連接在一起可以重復任意次數如中,號作用于表示連接,而作用于數字表示加法,操作符的作用會根據其作用的對象而有所適應。中的對象被分類為和。針對的核心類型,數字字符串和都是的。 1, >>> len(str(3)) 結果是1,len不能對數字求值,需要先將數字轉換為str 2, math模塊中,有許多工具可以用來計算數學問題。使用math模塊,先導入math: i...
摘要: Caching Libraries for caching data. Beaker - A library for caching and sessions for use with web applications and stand-alone Python scripts and applications. dogpile.cache - dogpile.cache...
摘要:去吧,參加一個在上正在舉辦的實時比賽吧試試你所學到的全部知識微軟雅黑深度學習終于看到這個,興奮吧現(xiàn)在,你已經學到了絕大多數關于機器學習的技術,是時候試試深度學習了。微軟雅黑對于深度學習,我也是個新手,就請把這些建議當作參考吧。 如果你想做一個數據科學家,或者作為一個數據科學家你想擴展自己的工具和知識庫,那么,你來對地方了。這篇文章的目的,是給剛開始使用Python進行數據分析的人,指明一條全...
摘要:,可以對對象進行自動地回收。如下,這種情況的發(fā)生表示隨改變了,應該意識到這個問題。代表引用相同則返回,否則,返回。這個判斷會更加嚴格。的值為的兩個量,其必定也是。,和指向了不同的。,由于會存儲一些小的和小的以方便重新利用。 1, 在Python中,類型永遠跟隨object,而非variable。Variable沒有類型。 2,在下面的三個式子中,a首先被賦予整形3,再被賦予字符串‘sp...
摘要:此時不要在這里面的右邊加入,否則會被當做。,這個式子可以將二進制數,轉換為十進制的。需要注意的是,需要加上,表示。下面,表示括號內的第一個參數,表示第二個參數。 1, 字符串的連接concatenate有兩種方式:A:直接寫在一起: >>> title = Meaning of Life # Implicit concatenation >>> title Meaning of L...
閱讀 3350·2021-11-04 16:10
閱讀 3846·2021-09-29 09:43
閱讀 2692·2021-09-24 10:24
閱讀 3338·2021-09-01 10:46
閱讀 2503·2019-08-30 15:54
閱讀 585·2019-08-30 13:19
閱讀 3232·2019-08-29 17:19
閱讀 1049·2019-08-29 16:40