python列表解析式如何使用_python列表解析式,生成器,及部分内建函数使用方法...
標(biāo)準(zhǔn)庫datetime
需要導(dǎo)入datetime模塊:
import datetime
datetime模塊:
對日期,時間,時間戳的處理
datetime的類方法
today ?()
now(tz=None) 返回當(dāng)前時間的datetime對象,時間到微秒,如果tz為none返回值和today()一樣
utcnow()
fromtimestamp(timestamp,tz=None)從一個時間戳返回一個datemime對象
datetime對象:
timestamp()返回一個到微秒的時間戳
時間戳: 格林威治時間170年1月1日0點(diǎn)到現(xiàn)在的秒數(shù)
datetime對象,構(gòu)造方法:
datetime.datetime(2017,10,08,13,55,35,123456)
year年month月day日hour時間minute分鐘second秒microsecond微秒
replace() 返回并修改新的時間
isocalendar()返回一個三元組(年,周,周的天)
日期格式化:
類方法 strptime(date_string,foamat) ,返datetime對象
對象方法strftime(fotmat) ,返回字符串
字符串format函數(shù)格式化
timedelta對象:
datetime2= datetime1+datedelta
datetime2=datetime1-datedelta
timedelta=datetime1-datetime2
構(gòu)造方法:
datetime.timedelta(day=0,秒=0,微秒=0,毫秒=0,分=0 ,時=0,weeks=0)
year= datetime.timedelta(day=365)
total_seconds()返回時間差的總秒數(shù)
time:
time.sleep(secs) 將調(diào)用線程掛起指定的秒數(shù)
列表解析:
舉例:
生成一個列表,元素0~9,對每一個元素自增1后求平方返回新列表
l1=list(range(10))
l2=[]for i inl1:
l2.append((i+1)**2)
使用列表解析式的程序?yàn)?#xff1a;
l1=list(range(10))
l2=[(i+1)**2 for i inl1]print(l2)
列表解析list comprehension
語法:
[返回值 for 元素 in 可迭代對象 if條件]
使用中括號[],內(nèi)部是for循環(huán),if條件語句可選
返回一個新列表
列表解析式是一種語法糖
編譯器會優(yōu)化,不會因?yàn)楹唽懚绊懶?#xff0c;反而優(yōu)化提升效率
減少代碼量,可讀性強(qiáng),工作量降低,減少出錯
列表解析式進(jìn)階:
列表解析式為:[expr for item in iterable if cond1 if cond2]
自然語法為:
ret =[]for item initerable:ifcond1:ifcond2:
ret.append(expr)
舉例:
20以內(nèi)技能被2整除又能被3整除的數(shù)
[ifor i in range(20) if i%2==0 and i%3==0]
[ifor i in range(20) if i%2==0 if i%3==0]
列表解析式多層循環(huán)的用法:
列表解析式的寫法:[expr for i in iterable1 for j in iterable2 ]
自然寫法:
ret =[]for i initerable1:for j initerable2:
ret.append(expr)
舉例
[(x, y) for x in 'abcde' for y in range(3)]
[[x, y]for x in 'abcde' for y in range(3)]
[{x: y}for x in 'abcde' for y in range(3)]
生成器表達(dá)式:
語法
(返回值 for 元素 in 可迭代對象 if條件)
列表解析式的中括號換成小括號就是生成器表達(dá)式
返回一個生成器
和列表解析式的區(qū)別:
生成器表達(dá)式時按需計算('惰性求值',延遲計算),需要的時候才計算值
列表解析式是立即返回值
生成器:
可迭代對象
迭代器
舉例
和列表解析式對比:
計算方式:
生成器表達(dá)式延遲計算,列表解析式立即計算
內(nèi)存占用:
單從返回值來說,生成器表達(dá)式省內(nèi)存,列表解析式返回新列表
生成器沒有數(shù)據(jù),內(nèi)存占用少,使用時,一個個返回數(shù)據(jù),總體占用數(shù)據(jù)差不多
列表解析式構(gòu)造新的列表需要占用內(nèi)存空間
計算速度:
單看計算時間,生成器表達(dá)式耗時短,列解析式耗時長
但是生成器本身沒有返回任何值,只返回了一個生成器對象
列表解析式構(gòu)造返回了一個新的列表
總結(jié):
一般來說 ,多用解析式,簡短 高效
如果一個解析式非常復(fù)雜,難以理解,可以考慮拆解for循環(huán)
生成器和迭代器時不同的對象,但都是可迭代對象
內(nèi)建函數(shù):
id(value)
表示id
返回對象的唯一標(biāo)識
哈希 hash()
返回一個對象的哈希值
類型type()
返回對象的類型
類型轉(zhuǎn)換
float() int() bin() hex() oct() bool() list() tuple() dict() set() complex() bytes() bytearray(
輸入input([prompt])
接收用戶輸入,返回一個字符串
打印 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
打印輸出,默認(rèn)使用空格分割,換行結(jié)尾,輸出到控制臺
對象長度 len(s)
返回一個集合類型的元素個數(shù)
isinstance(obj,class_or_tuple)
判斷對象obj是否屬于某種類型或者元組中列出的某個類型
isinstance(True,int)
issubclass(cls,class_or_tuple)
判斷類型cls是否時某種類型的子類或元組中列出的某個類型的子類
issubclass(bool,int)
絕對值abs(x) x為數(shù)值
最大值 max() 最小值min()
返回可迭代對象中最大或最小值
返回多個參數(shù)中最大或最小值
round(x) 四舍五入六取整,rount(-0.5)
pow(x,y) 等同于x**y
常用函數(shù)()
range(stop)
從0開始到stop-1的可迭代對象;range(start,stop[,step])從start開始到stop-1步長為step的可迭代對象
divmod (x,y) 等價于 tuple(x//y,x%y)
sum(可迭代對象[,start]) 對可迭代對象的所有數(shù)值元素求和
sum(1,100,2)) 求1到100步進(jìn)為2的元素的和值
chr()給定一個一定范圍的整數(shù)返回對應(yīng)的字符
chr(97)=a chr(20013)=中
ord()返回字符對應(yīng)的整數(shù)
ord('a')=97 ord('中')=20013
sorted(可迭代對象[元素][reverse])排序
返回一個新的列表默認(rèn)升序
reverse是反轉(zhuǎn)
反轉(zhuǎn):
reversed(seq)
返回一個反轉(zhuǎn)元素的迭代器
枚舉:
enumerate(seq, start=0)
迭代一個序列,返回索引數(shù)字和元素構(gòu)成的二元組
star表示索引開始的數(shù)字,默認(rèn)是0
迭代器和取元素 iter(可迭代對象)、next(可迭代對象)
iter 將一個可迭代對象封裝成一個迭代器
next對一個迭代器取下一個元素,如果所有元素以取過,再次next會拋出StopIteration異常
可迭代對象:
能同過迭代一次次返回不同的元素的對象,所謂相同不是指值是否相同,而是元素在容器中是否是同一個,例如列表中的值可以重復(fù)
可以迭代,但是未必有序,未必可索引
可迭代對象有 : list tuple string bytes bytearray range set dict 生成器等
可以使用成員操作符innot in,in本質(zhì)山就是在遍歷對象
迭代器:
特殊的對象,一定是可迭代對象,具備可迭代對象的特征
通過iter法國法把一個可迭代對象封裝成迭代器
通過next方法,迭代迭代器對象
生成器對象,就是迭代器對象
拉鏈函數(shù)zip(多個可迭代對象)
項(xiàng)拉鏈一樣把多個可迭代對象合并在一起,返回一個迭代器
將每次從不同對象中取到的元素合并成一個元組
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python列表解析式如何使用_python列表解析式,生成器,及部分内建函数使用方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 交换机芯片_基于STM32的
- 下一篇: 全能电子地图_全能电子地图下载文件结构说