解析式

列表解析式和字典解析式

datetime模塊

對日期,時間,時間戳的處理

datetime

today()返回本地時區當前的datetime對象

now(tz=None)返回當前時間的datetime對象,時間到微秒,如果tzNone,返回和today()一樣

utcnow()沒有時區的當前時間

fromtimestamp(timestamp,tz=Zone)從時間戳返回另一個datetime對象

datetime對象

Timestamp()返回一個到微秒的時間戳

時間戳:格林威治時間1970110點到現在的秒數

標準庫datetime

日期格式化

類方法strptimedate_string,format,返回datetime對象

對象方法strfimeformat),返回字符串

字符串format函數格式化

timedate對象

datetime2 = datetime1 + datetime2

datetime2 =datetime1 – timedate

timedate = datetime -datetime2

構造方法

Datetime.timedelta(days=0,seconfs=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)

Year = datetime.timedelta(days=365)

Total_seconds()返回時間差的總秒數

標準庫time

time.sleep(secs)將調用線程掛起指定的秒數

列表解析

生成一個列表,元素0~9對每一個元素自增1后求平方返回新的列表

lst1 = list(range(10))

lst2 = []

for i in lst1:

????lst2.append((i+1)**2)

print(lst2)

列表解析式

lst1 = list(range(10))

lst2 = [lst2.append((i+1)**2) for i in lst1]

print(lst2)

print(type(lst2))

列表解析

語法:[返回值 for 元素 in ?可迭代對象 if條件]

使用中括號[],內部是for循環,if條件語句可選

返回一個新的列表

列表解析式是一種語法糖

編譯器會優化,不會因為簡寫而影響效率,反而優化提高了效率

減少程序員工作量,減少出錯

簡化了代碼,但可讀性強

舉例:獲取10以內的偶數,比較執行效率

lst = []

for i in range(10):

????if i % 2 == 0:

????????print(i)

解析式:[i for i in range(10) if i % 2 == 0]

列表解析式進階

[expr for i in iterable1 for j in iterable2]等價于

expr = []

for i in iterable1:

????for j in range(iterable2):

????????ret.append(expr)

練習題:返回1-10平方的列表

[i**2 for i in range(1,11)]

有一個新列表 lst = [] ,生成一個新列表,要求列表元素是lst相鄰之和

?[ (lst[i]+lst[i+1]) for i in range(7)]

打印99乘法表

print(“”.join([‘{}*{}={:<3}{}’.format(j,i,j*i, ‘\n’if j==i else ”) for i in range(1,10) for j in range(1,i+1) ]) )

[print(‘{}*{}={:<3}{}’.format(i,j,i*j,’\n’ if i==j else ‘ ‘),end=”) for i in range(1,10) for j in range(1,i+1)]

生成器表達式

語法:返回值 for 元素 in 可迭代對象 if 條件

列表解析式的中括號換成小括號

返回一個生成器

和列表解析式的區別

生成器表達式是按需計算(或者說是惰性求值,延遲計算),需要的時候才計算值

列表解析式是立即返回值

生成器:可迭代對象,迭代器

舉例:

g = (“{:04}”.format(i) ?for i in range(1,11))

next(g)

next(g)

for x in g:

????print(x)

print(‘——————–‘)

for x in g:

????print(x)

總結:延遲計算

?返回迭代器,可以迭代

從前到后走完一遍,不能回頭

對比列表:

g = (“{:04}”.format(i) ?for i in range(1,11))

for x in g:

????print(x)

print(‘———————‘)

for x in g:

????print(x)

立即計算,返回的不是迭代器,返回的事迭代對象列表

從前到后走完一遍后,可以重新回頭迭代

和列表解析式的對比

計算方式

生成器表達式延遲計算,列表解析式立即計算

內存占用

單從返回值來說,生成器表達式省內存,列表解析式返回新的列表

生成器沒有數據,內存占用極少,但是使的時候,雖然一個個返回數據,但是合起來占用的內存也差不多

列表解析式構造新的列表需要占內存

計算速度

但看時間看,生成器表達式耗時非常短,列表解析式耗時長

但是生成器本身沒有返回值,只返回了一個生成器對象

列表解析式構造并返回了一個新的列表

集合解析式

語法:{返回值for 元素 in 可迭代對象 if 條件}

列表解析式的中括號換成大括號{}就行了

;立即返回一個集合

用法:{(x,x+1)for i in range(10)}

字典解析式

用法;{str(x):y for i in range(3) for y in range(4)}等價于

lsr = {}

for i in range(3):

????for y in range(4):

????????lsr[str(x)] = y

print(lsr)

總結

Python2 引入了列表解析式

Python2.4 引入了生成器表達式

Python3 引入了集合,字典解析式,并遷移到了2.7

一般來說,應該多應用解析式,簡短高效

如果一個解析式非常復雜,難以讀懂,要考慮解成for循環

生成器和迭代器是不同的對象,但是都是可迭代對象

內建函數

標識id

返回對象的逶迤標識CPython的內存地址

哈希hash()

返回一個對象的哈希值

類型type()

返回對象的類型

類型轉換

Float() int() bin() hex() oct() bool() list() ?tuple() ??dict() set() ?complex() ?bytes() bytearray()

輸入input([prompt])

接收用戶輸入,返回一個字符串

打印print()

????打印輸出,默認使用空格分割,換行結尾,輸出到控制臺

對象長度len()

返回一個集合類型的元素個數

Isinstance(obj,class_or_tuple)

判斷對象obj是否屬于某種類型或者元組中列出的某個類型

Isinstance(Ture,int)

判斷類型cls是否某種類型的子類或者元組中列出的某個類型的子類

Issubclass(bool,int)

絕對值abs(x) x為數值

最大值max() ?最小值min()

返回值可迭代對象中最大或者最小值

返回多個參數中最大或者最小值

Round() 四舍六入五取偶 round(-0.5)

?

?

?

?

?

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

(0)
zhangmengzhangmeng
上一篇 2018-04-09 08:55
下一篇 2018-04-09 10:58

相關推薦

  • python學習總結

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

    2018-04-15
  • 正則表達式

    正則表達式 分類 BRE:基本正則表達式,grep,sed,vi等軟件支持,vim有擴展 ERE:擴展正則表達式,egrep,grep -E ,sed ?r等 PCRE:幾乎所有的高級語言都是PCRE的方言或則變種, 基本語法 元字符metacharater . ?匹配除換行符外任意一個字符 [abc]字符集合,只能表示一個字符的位置,匹配所包含的任意一個字…

    Python筆記 2018-05-07
  • 內置數據結構

    list,tuple,str,bytes,bytearray,set,切片,分裝解構,冒泡法

    2018-03-31
  • functools模塊,偏函數partial、緩存LRU

    functools模塊,偏函數partial、緩存LRU

    2018-04-23
  • Python 部分知識點總結(二)

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

    Python筆記 2018-03-30
  • 面向對象之魔術方法

    特殊屬性 屬性 含義 __name__ 類、函數、方法的名稱 __module__ 類定義所在的模塊名 __class__ 對象或類所屬的類 __bases__ 類的基類的元組,順序為它們在基類列表中出現的順序 __doc__ 類、函數的文檔字符串,若沒定義則為None __mro__ 類的mro,方法查找順序 __dict__ 類或實例的屬性,可寫的字典 …

    2018-05-20
欧美性久久久久