Ipython封裝解構

IPython

Shell命令

!command 執行shell命令

!ls -l , !touch a.txt file = !ls -l | grep py

魔術方法

使用%開頭的,IPython內置的特殊方法

%magic 格式

%開頭是line magic

%% 開頭是cell magic,notebookcell

%alias 定義一個系統命令的別名

alias ll ls -l

%timeit statement

-n ?一個循環loop執行語句多少次

-r ?循環執行多少吃loop,取最好的結果

%%timeit setup——code

封裝和結構

封裝

將多個值用逗號分割,組合在一起

本質,返回一個元組,只是省略了小括號

Python特有語法,被很多語言學習借鑒

t1 = 1,2#定義元組

t1 = 1,2 12封裝成元組

Typet1

Typet2

舉例:a = 4 ???b = 5 ?

temp = a ?a = b b = tmp

a , b = b , a

右邊使用了封裝,左邊使用了解構

解構

把線性的結構元素解開,并順序的賦給其他變量

左邊接納的數量要和右邊解開的元素個數一致

舉例:

lst = [3,5]

First,second = lst

Print(first,second)

Python3的解構

使用*變量名接收 ,但不能單獨使用

*變量名 收集后組成一個列表

head,*mid,tail = “asdfghjkl”

丟棄變量

這是一個慣例,是一個不成文的約定,不是標準

如果不關心一個變量,就可以定義為改變量的名字

_是一個合法的標識符,也可以作為一個有效的變量使用,但是定義成_就是不要使用,除非你明確的知道這個數據需要使用

舉例:

lst = [9,8,7,20]

Frist,*second = lst

Head,*_,tail = lst

Print(head,tail)

#_是合法的標識符,看到下滑線就知道這個變量就是不想被使用

例子:aa = [1,[2,3,4],5]

_,bb,_,=aa

_,_,cc=bb

cc

例子

lst = [1,[2,3,4],5]

a,(b,c,d),e = lst

print(a,b,c,e)

_,(*_,val),*_ = lst

print(val)

例子

key,_,val = “JAVA_HOME=/usr/bin”.partition(“=”)

print(key)

print(val)

set

約定:set翻譯為集合。collection翻譯為集合類型,是一個大概念

可變的,無序的,不重復的元素集合

set{} ?—-> ?字典 ?set() 集合

Set的元素

Set的元素要求必須可以hash

目前學過的不可hash的類型有lsit,set

元素不可索引

Set可以迭代

Set增加

addelem

增加一個元素到set

如果一個元素存在,什么都不做

Update*others

合并其他元素到set集合中來

參數others必須是可迭代對象

就地修改(數字分開)

Removeelem

set中移除一個元素

元素不存在,就拋出keyerror異常

Discardelem

set中移除一個元素

元素不存在,什么都不做

Pop() —> item

移除并返回任意的元素

空集返回keyerror異常

Clear()

移除所有元素

Set修改查詢

修改

要么刪除,要么加入新的元素

查詢

非線性結構,無法索引

遍歷

可以迭代所有元素

成員運算符

In not in判斷元素否在set

Set和線性結構

線性結構的查詢時間復雜度是On),即隨著數據規模的增而增加耗時

Set,dict等結構,內部使用hash值作為key,時間復雜可以做到O1),查詢時間和數據規模無關

hash:數值型int,float,complex

布爾型True False

字符串string,bytes

Tuple ??None

以上都是不可變類型,成為可hash類型,hashable

集合

基本概念

全集:所有元素的集合。例如實數數列,所有實數組成的集合就是全集

子集subset和超集superset:一個集合A所有的元素都在另一個集合B內。A就是B的子集,BA的超集

真子集和真超集:AB的子集,且A不等于B,A就是B的真子集,BA的真超集

并集:多個集合合并的結果

交集:多個集合的公共部分

差集:集合中除去其他集合的公共部分

Union*other):多個集合合并后的新的集合

| 運算符重載等同于union

Update*others):多個集合合并就地修改

|= 等同update

交集:AB集合的公共部分

Intersection*others):返回和多個集合的交集

& :等同于intersection

Intersection_update*others):獲取多個集合的交集 就地修改

&= ?等同于Intersection_update

差集:集合AB,有所有屬于A且不屬于B的元素組成的集合

Difference*others):返回多個集合的差集

一:等同于difference

Difference_update*others):-=:獲取和多個集合的差集并就地修改

集合運算

對稱差集:集合AB,有所有不屬于AB的交集元素組成的集合記做(A-BU B-A(

Symmetric_differenceothers):返回和另一個集合的差集:^

Symmetri_difference_updateothers):獲取和另一個集合的差集并就地修改

^= 等同于symmetri_difference_update

例子

a = {‘A’,’B’,’C’} ?#我的好友

b = {‘C’,’B’,’D’} ?#他的好友

a & b

?

a = {1,2,3,4} ?#群里

b = {4} ???????#

a & b

?

a = {‘A,B,C’} ??#權限

b = {‘C,B,D’} ??#我有的權限

a & b == a

?

a = {‘A’,’B’,’C’,’D’,’E’} ??#總任務

b = {‘A’,’B’,’C’} ?????????#已經完成

a – b

?

#隨機產生210個數字的列表,

#每個數字取值范圍[10,20]

#一共有多少個不同的數字

#不重復的數字有幾個

#重復的數字有幾個

1import random

lst = set()

lat = set()

for i in range(10):

????a=random.randint(10,20)

????lst.add(str(a))

????b=random.randint(10,20)

????lat.add(str(b))

print(len(lst.union(lat)))

print(len(lst.symmetric_difference(lat)),(lst.symmetric_difference(lat)))

print(len(lst.intersection(lat)),(lst.intersection(lat)))

2a = [1,9,7,5,6,7,8,8,2,6]

b = [1,9,0,5,6,4,8,3,2,3]

s1 = set(a)

s2 = set(b)

print(s1)

print(s2)

print(s1.union(s2))

print(s1.symmetric_difference(s2))

print(s1.intersection(s2))

?

?

?

?

?

?

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95568

(0)
zhangmengzhangmeng
上一篇 2018-04-09 08:42
下一篇 2018-04-09 08:56

相關推薦

  • 第一周作業

    linux基礎

    Python筆記 2018-05-12
  • Python內建函數

    內建函數 標識id() 返回對象的唯一標識,CPython返回內存地址 哈希hash() 返回一個對象的hash值 類型type() 返回對象的類型 類型轉換 int()、float()、bin()、hex()、oct()、bool()、list()、tuple()、dict()、set()、complex()、bytes()、bytearray() 輸入i…

    2018-04-08
  • 文件操作

    文件操作 馮諾依曼體系架構 CPU由運算器和控制器組成 運算器,完成各種算數的運算,邏輯運算,數據傳輸等數據加工處理 控制器,控制程序的執行 存儲器,用于記憶程序的數據,列如內存 輸入設備,將數據或者程序輸入到計算機中列如鍵盤 鼠標 輸出設備,將數據或者程序的處理結果展示給用戶,列如顯示器,打印機等等 ? 一般說的IO操作,指的是文件的IO,如果是指網絡的I…

    Python筆記 2018-05-02
  • 日志分析項目

    日志分析

    2018-05-07
  • Python內置數據結構——字符串

    知識結構圖 學習筆記 字符串 字符組成的有序序列,字符的集合 使用單引號、雙引號、三引號引起來的字符序列 不可變對象 Unicode類型 定義 單引號、雙引號、三引號 r、R:引號內的字符原樣輸出 元素訪問 索引訪問 可迭代 join連接 “string“.join(iteratable) 使用string作為分隔符將可迭代對象連接起…

    2018-03-31
  • Python 部分知識點總結(十)

    此篇博客只是記錄第十二周未掌握或不熟悉的知識點,用來加深印象。

    Python筆記 2018-05-28
欧美性久久久久