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:數值型intfloat,complex

布爾型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 11:24
下一篇 2018-03-31 14:23

相關推薦

  • 解析式

    列表解析式和字典解析式 datetime模塊 對日期,時間,時間戳的處理 datetime類 today()返回本地時區當前的datetime對象 now(tz=None)返回當前時間的datetime對象,時間到微秒,如果tz為None,返回和today()一樣 utcnow()沒有時區的當前時間 fromtimestamp(timestamp,tz=Zo…

    2018-04-09
  • Python高階函數及裝飾器

    First Class Object 函數在Python中是一等公民 函數也是對象,可調用的對象 函數可作為普通變量、參數、返回值等 高階函數 數學定義:y=g(f(x)) 高階函數需滿足的條件,至少其一 接受一個或多個函數作為參數 輸出一個函數 內建函數的高階函數 排序:sorted(iterable[,key][,reverse]) 返回一個新列表,對一…

    2018-04-22
  • python學習總結

    內建函數、函數、插入排序、樹

    2018-04-15
  • Python面向對象基礎

    語言分類 面向機器 抽象成機器指令,讓機器容易理解 代表:匯編語言 面向過程 按照步驟一步一步走,若出現情況A做相應的處理,若出現情況B做相應的處理 問題規模小,可以步驟化,按部就班處理 代表:C 面向對象OOP 計算機需要處理的問題的規模越來越大,需要多人、多部門協作 代表:C++、Java、Python 面向對象 一種認識世界、分析世界的方法論。將萬事萬…

    2018-05-06
欧美性久久久久