1. 程式人生 > >python初級資料結構(list,tuple,dict)(補充筆記,初級)

python初級資料結構(list,tuple,dict)(補充筆記,初級)

List:

遞推式構造列表(List Comprehension),例:

list = [x*2 for x in lm]

切片list[start: stop: step]

sort 和 sorted: sort會改變list(in-place),而sorted返回排序好的列表(return values),原有的不改變. 引數有sequen和key,key值代表按(...)進行排序。

list.sort()
sorted(list1)
sorted(dict, key=lambda x:dict[x])#按字典中的value進行排序
sorted(dict) #預設對字典的key進行排序

Warning:return values vs. in-place change

map 對映(多對多)

map(func, seq)  #返回的是迭代器,可用for進行訪問
list(map(func, seq))  #轉換為list物件

reduce 化簡(多對少)

如下先x1與x2進行func操作,再與x3func操作,再與x4func操作

reduce(func, [x1,x2,x3,x4])

filter 過濾(多對少)

對list的每個元素進行func操作,如果值為True,則保留。

filter(func, list)

------------------------------------------------------------------------------------------------

.pop(_)操作既return values,又in-place。

join:

delimeter = '*'
s = delimeter.join(t)  #返回以delimeter連線t中元素的字串

------------------------------------------------------------------------------------------------

賦值、複製、copy

直接賦值,引用複製,在記憶體中實際指向同一個物件。

>>> a = [1,2,3]
>>> b = a
>>> b is a
True
>>> b[0] = 100
>>> a
[100, 2, 3]

a切片賦值給b,b改變,a不會發生改變

>>> a = [1,2,3,4]
>>> b = a[:]
>>> b[0]= 100
>>> a
[1, 2, 3, 4]
>>> b
[100, 2, 3, 4]

deep copy(完全複製,不會互相影響)

>>> import copy
>>> a = [1,2,3,4]
>>> b = copy.deepcopy(a)
>>> b
[1, 2, 3, 4]
>>> b[0] = 100
>>> a
[1, 2, 3, 4]
>>> b
[100, 2, 3, 4]
>>> a[1] = 200
>>> b
[100, 2, 3, 4]

shallow copy:

  1. 如果是一個簡單資料(不可變物件),會複製,不會互相影響
  2. 但對複雜物件(可變物件),會有相互影響
>>> import copy
>>> a = [1,2,[1,2,3]]
>>> b = copy.copy(a)
>>> b
[1, 2, [1, 2, 3]]
>>> b[0] = 100
>>> a
[1, 2, [1, 2, 3]]
>>> a[1] = 200
>>> b
[100, 2, [1, 2, 3]]
>>> b[2] = 3
>>> b
[100, 2, 3]
>>> a
[1, 200, [1, 2, 3]]

Dict

dict is mapping 用空間換時間,適合作快取

get

>>> a.get('age', 10)
18
>>> a = {'name': 'nn'}
>>> a.get('age', 10)
10
>>> a
{'name': 'nn'}
>>> b = {'name': 'nn', 'age': 18}
>>> b.get('age', 18)
18
>>> b
{'name': 'nn', 'age': 18}

setdefault()

快取的概念

例:

known = {0:0, 1:1}
def fib(n):
    if n in known:
        return known[n]
    res = fib(n-1) + fib(n-2)
    known[n] = res
    return res


packing and unpacking

zip

2018/5/4:上課筆記