## List初步進階 ##
hello,大家好,經過上篇筆記的介紹,我們已經對List這種資料型別有了初步的理解,今天我要趁熱打鐵,為大家介紹一些實用的List技巧,希望能幫助到各位大家~
extend合併列表()
first_lst = [`I`,`am`,`noob`]
second_lst = [12,34,56]
first_lst.extend(second_lst)
print(first_lst)
Out:[`I`, `am`, `noob`, 12, 34, 56]
簡單來說List1.extend(List2),會返回List1,結果是將List2新增到List1裡,相當於extend前面的列表合併括號裡的。
count()檢視列表中元素出現次數
lst = [1,2,3,2,4,5,5,5,6,7]
print(lst.count(5))
Out: 4
這個方法很簡單但是卻很實用,會知道一個元素在列表中出現的次數,這裡5出現了3次,結果輸出3
分解列表賦值
a = [1, 2, 3]
x, y, z = a
print(x)
print(y)
print(z)
Out:1
2
3
這裡很有意思,簡單來說就是我們可以分別把一個列表中的值分別賦值給變數
List.index()
lst = [`I`,`am`,`noob`]
lst.index(`am`)
Out:1
lst.index(`good`)
Out:ValueError: `adfa` is not in list
我們可以獲取列表中一個值的index,但是如果列表中不存在這個值會丟擲ValueError
sorted(List,reverse=True or False)
numbers = [2,1,3,5,4,8,6,7]
ascending = sorted(numbers)
descending = sorted(numbers,reverse=True)
print(ascending)
print(descending)
Out:[1, 2, 3, 4, 5, 6, 7, 8]
[8, 7, 6, 5, 4, 3, 2, 1]
sorted()括號裡面可以放入一個可排序的list,預設reverse=False,也就是從小到大啦,如果我們賦值reverse=True,那就是倒序啦,大家可以試試字串在列表裡是什麼情況~
List.insert(index,value)
numbers = [1,3,5,7,9]
numbers.insert(0,0)
print(numbers)
Out:[0, 1, 3, 5, 7, 9]
這個方法很好理解對不對!就是向一個列表裡面插入值,括號裡面第一個值是索引,第二個值是想要插入的值
倒序輸出一個List
numbers = [1,3,5,7,9]
reverse_numbers = numbers[::-1]
print(reverse_numbers)
Out:[9, 7, 5, 3, 1]
這裡可能知識點有點略微超前,利用List的切片功能,這裡numbers後面的中括號其實包括預設的三個值:
- [start_index : end_index : steps]
最後的steps意思就是說隔幾個值選取,這裡我們全選numbers裡所有的值,但是-1就是倒序一個個輸出啦。如果還有不明白的小白朋友們可以百度一下哈,嗖的一下百家號Python補習班就出來啦,哈哈,你啥都沒查到~ 開個小玩笑。
filter,map,lamba ,reduce
關於這四個方法的具體講解就不在這裡啦,因為我們是小白,對目前來說有點不好理解,之後我會專門講一下,大家可以看看例子:
- filter(function, sequence):對sequence中的item依次執行function(item),將執行結果為True的item組成一個List/String/Tuple(取決於sequence的型別)
- map(function, sequence) :對sequence中的item依次執行function(item),見執行結果組成一個List返回
- reduce(function, sequence, starting_value):對sequence中的item順序迭代呼叫function,如果有starting_value,還可以作為初始值呼叫,例如可以用來對List求和
- lambda:這是Python支援一種有趣的語法,它允許你快速定義單行的最小函式
現在依次舉栗子啦:
filter()根據返回值True還是False 篩選奇偶數
numbers= [1,2,3,4,5,6,7,8,9,10]
even_numbers =list(filter(lambda x:x % 2,numbers))
odd_numbers = list(filter(lambda x:x % 2==0,numbers))
print(`Even Numbers are :`,even_numbers)
print(`Odd Numbers are :`,odd_numbers)
Out:Even Numbers are : [1, 3, 5, 7, 9]
Odd Numbers are : [2, 4, 6, 8, 10]
map()根據一個數字列表生成一個每個值都是原來3倍的陣列
numbers= [1,2,3,4,5,6,7,8,9,10]
triple_numbers= list(map(lambda x:x*3,numbers))
print(`Triple Numbers are :`,triple_numbers)
Out:Triple Numbers are : [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
reduce()根據一個數字列表生成累積和
from functools import reduce
numbers= [1,2,3,4,5,6,7,8,9,10]
result_add= reduce(lambda x,y:x+y,numbers)
print(`Total :`,result_add)
Out: Total : 55
最後這幾個不需要大家現在就搞明白,前幾個可以熟悉一下,最好能自己練習一下,今天就到這裡啦
完結,撒花~