生成器表示式,列表推導式 內建函式

2022-03-17 06:25:33 字數 1947 閱讀 3261

一、列表推導式

[變數(加工後的變數) for 變數 in iterable] 迴圈模式
# l2 = [i for i in range(1, 14

)]# print(l2)

# l3 = [ '

python%s期

' % i for i in range(1, 14

)]# print(l3)

凡是用列表推導式構造的列表物件,用其他方式都可構建.,非常複雜的列表,列表推導式是構建不出的
[變數(加工後的變數) for 變數 in iterable if 條件] 篩選模式
#

l1 = [i for i in range(1, 31) if i % 3 == 0]

#print(l1)

二、生成器表示式

#

g_obj = ('python%s期' % i for i in range(1,14)) # 迴圈模式

#g_obj1 = ('python%s期' % i for i in range(1,14) if i % 2 == 0) # 篩選模式

#print(g_obj) #at 0x00000000025f73b8>

#print(g_obj.__next__()) #python1期

1.把列表解析的[ ] 換成 ( ) 得到的就是生成器表示式

2.列表解析與生成器表示式都是一種便利的程式設計方式,只不過生成器表示式更節省記憶體

3.python不但使用迭代器協議,讓for迴圈變得更加通用。大部分內建函式,也是使用迭代器協議訪問物件的

三、內建函式

***locals()    當前位置的所有變數以及函式名等資料.
***globals()   永遠是全域性的.
*** eval:執行字串型別的**,並返回最終結果。
#

print(eval('1+3')) 4

#dic = eval("")

#print(dic,type(dic))

*** exec: 執行字串型別的**
code = '''

for i in range(1, 11):

print(i)

'''exec(code)

結果: 1 2 3 4 5 6 7 8 9 10

compile:將字串型別的**編譯。**物件能夠通過exec語句來執行或者eval()進行求值
*** input:函式接受乙個標準輸入資料,返回為 string 型別
*** print:列印輸出
#

print(1,2,3,sep='|') # 設定每個元素的連線符 sep='|'

#print(666,end='') # end='\n' 預設換行

# print(555)

** hash:獲取乙個物件(可雜湊物件:int,str,bool,tuple)的雜湊值
** id:用於獲取物件的記憶體位址
__import__:函式用於動態載入類和函式
help:函式用於檢視函式或模組用途的詳細說明
** callable:函式用於檢查乙個物件是否是可呼叫的。如果返回true,object仍然可能呼叫失敗;但如果返回false,呼叫物件ojbect絕對不會成功。
def

func1():

print(111)

a = 666

print

(callable(a)) false

print(callable(func1)) true

列表推導式,生成器表示式

生成器表示式,列表推導式 其他推導式 變數 加工後的變數 for 變數 in iterable 迴圈模式 變數 加工後的變數 for 變數 in iterable if 條件 篩選模式 優點 1,節省 一行搞定.2,看著高大上.缺點 不好排錯.整體 凡是用列表推導式構造的列表物件,用其他方式都可構建...

列表推導式 生成器表示式

列表推導式 基本形式 表示式 for 引數 in 可迭代物件 或者 表示式 for 引數 in 可迭代物件 if 條件 例項 1 l 2for i in range 100 egg s i 4printi5 6 不帶if條件 7 l agg s i for i in range 100 89 帶if...

生成器 生成器函式 推導式 生成器表示式

一 生成器 生成器的本質就是迭代器 生成器一般由生成器函式或者生成器表示式來建立 其實就是手寫的迭代器 def func print 111 yield 222ret func print ret 因為函式中存在yield,那麼這個函式就是乙個生成器函式。這個時候我們在想執行函式就不再是執行函式了,...