IPython封裝解構和集合

IPython

Shell命令

!command 執行shell命令

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

魔術方法

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

%magic 格式

%開頭是line magic

%% 開頭是cell magicnotebookcell

%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的類型有lsitset

元素不可索引

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,floatcomplex

布爾型True ,False

字符串stringbytes

Tuple ??None

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

集合

基本概念

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

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

真子集和真超集:AB的子集,且A不等于BA就是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/93901

(0)
zhangmengzhangmeng
上一篇 2018-03-31
下一篇 2018-03-31

相關推薦

  • 高階函數和裝飾器

    高階函數和裝飾器 高階函數 : 滿足以下條件之一的稱為高階函數 接受一個或多個函數作為參數 輸出一個函數 高階函數舉例: def counter(base): def inc(step=1): nonlocal base base += step return base return inc 1)自定義sort函數 def sort(itertable): …

    Python筆記 2018-04-23
  • Python內建函數

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

    2018-04-08
  • 裝飾器

    裝飾器 需求 一個加法函數,想增強它的功能,能夠輸出被調用過以及調用的參數信息 def add(x, y): return x + y 增加信息輸出功能 def add(x, y): print(“call add, x + y”) ?# 日志輸出到控制臺 return x + y p 上面的加法函數是完成了需求,但是有以下的缺點 打…

    Python筆記 2018-04-23
  • Python文件操作

    計算機體系架構 運算器:完成各種算術運算、邏輯運算、出具傳輸等數據加工處理 控制器:控制程序的執行 CPU = 運算器 + 控制器 存儲器:用于記憶程序的數據,內存 輸入設備:將數據或程序輸入到計算機中 輸出設備:將數據或程序的處理結果展示給用戶 文件IO常用操作 open 打開 read 讀取 write 寫入 close 關閉 readline 行讀取 …

    Python筆記 2018-05-02
  • 遞歸函數

    遞歸函數 def foo(b,b1=3):print(“foo1 called “,b,b1)def foo2(c):foo3(c)print(“foo2 called”,c)def foo3(d):print(“foo3 called”)def mian():print(“…

    2018-04-16
  • StringIO

    StringIOio模塊中的類From io import StringIO內存中,開辟的一個文本模式的buffer,可以像文件對象一樣操作它當close方法被調用的時候,這個buffer會被釋放StringIO操作getvalue() 獲取全部內容。跟文件指針沒有關系from io import StringIO# 內存中構建sio = StringIO(…

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