python初級データ構造(list,tuple,dict)(補充ノート、初級)

2958 ワード

List:
プッシュ構造リスト(List Compreshension)、例:
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化簡略化(多対少)
以下にx 1とx 2でfunc操作を行い、x 3 func操作を行い、x 4 func操作を行う
reduce(func, [x1,x2,x3,x4])

ろ過(多対少)
リストの各要素に対して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:
  • 単純なデータ(可変オブジェクト)の場合は、
  • に影響を与えることなくコピーされます.
  • 複雑なオブジェクト(可変オブジェクト)に対しては、相互影響
  • がある.
    >>> 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:授業ノート