測試題:
0. 注意,這道題跟上節課的那道題有點兒不同,回答完請上機實驗或參考答案。
- >>> old = [1, 2, 3, 4, 5]
- >>> new = old
- >>> old = [6]
- >>> print(new)
如果不上機操作,你覺得會打印什么內容?
1. 請問如何將下邊這個列表的'小甲魚'修改為'小魷魚'?
- list1 = [1, [1, 2, ['小甲魚']], 3, 5, 8, 13, 18]
2. 要對一個列表進行順序排序,請問使用什么方法?
3. 要對一個列表進行逆序排序,請問使用什么方法?
4. 列表還有兩個內置方法沒給大家介紹,不過聰明的你應該可以自己摸索使用的門道吧:copy() 和 clear()
5. 你有聽說過列表推導式或列表解析嗎?
沒聽過?!沒關系,我們現場來學習一下吧,看表達式:
- >>> [ i*i for i in range(10) ]
你覺得會打印什么內容?
- >>> [i*i for i in range(10)]
- [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
居然分別打印了0到9各個數的平方,然后還放在列表里邊了有木有?!
列表推導式(List comprehensions)也叫列表解析,靈感取自函數式編程語言 Haskell。Ta 是一個非常有用和靈活的工具,可以用來動態的創建列表,語法如:
[有關A的表達式 for A in B]
例如
- >>> list1 = [x**2 for x in range(10)]
- >>> list1
- [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
相當於
- list1 = []
- for x in range(10):
- list1.append(x**2)
問題:請先在 IDLE 中獲得下邊列表的結果,並按照上方例子把列表推導式還原出來。
- >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
6. 活學活用:請使用列表推導式補充被小甲魚不小心塗掉的部分
7. 請寫下這一節課你學習到的內容:格式不限,回憶並復述是加強記憶的好方式!