python全栈开发 * 14 知识点汇总 * 180530
生活随笔
收集整理的這篇文章主要介紹了
python全栈开发 * 14 知识点汇总 * 180530
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
14 生成器表達式 內置函數
# 一.迭代器 (補充)
# 1.如何判斷迭代對象,迭代器
# (1).dir(obj)檢測對象有沒有iter方法,然后it=obj.__iter__() 獲取迭代器 , it.__next__() 獲取元素.
s="我一定能學會一門計算機語言"
print(dir(s)) # 可以檢測字符串有沒有iter() 方法
it=s.__iter__() # 獲取迭代器
print(it.__next__()) # 獲取元素
print(it.__next__())
#(2).引入模塊
from collections import Iterable #(str,list,dict,tuple,set)
print(isinstance(s,Iterable)) # 結果是True 是可迭代對象
print(isinstance(s,Iterable)) # 結果是True 是迭代器
#二.構建生成器的方法:
# 1.生成器函數 有yield
# 2.生成器表達式
#三.生成器表達式
# 1.循環模式
# ( 變量 (加工后的變量) for 變量 in iterable )
l2 = [i for i in range(1, 14)] #列表推導式
print(l2)
gen_obj = (i for i in range(1, 14)) #生成器表達式
print(gen_obj)
print(gen_obj.__next__()) #取值
#加工后的變量
l1=["python%s期" %i for i in range(1,14)] #列表推導式
print(l1)
gen_obj1=("python%s期" %i for i in range(1,14)) #生成器表達式
print(gen_obj1.__next__()) #取值
# 列表推導式的優點:
#1.節省代碼;
#2.比較高大上
# 缺點: 不好排錯.
#整體評價:
# 凡是用列表推導構造的對象,用其他方式都可以構建.非常復雜列表,列表推導式構建不出來.
# 2.篩選模式
#( 變量 (加工后的變量) for 變量 in iterable if 條件 )
# (1)10以內所有數的平方
gen_ob = (i**2 for i in range(11))
print(gen_ob.__next__()) #0
print(gen_ob.__next__()) #1
print(gen_ob.__next__()) #4
#(2)30以內所有能被3整除的數的平方
gen_ob1=(i**2 for i in range(31) if i % 3 == 0)
print(gen_ob1.__next__())
print(gen_ob1.__next__())
print(gen_ob1.__next__())
print(gen_ob1.__next__())
#(3)100 以內所有的奇數.
#方法一
gen_ob3=(i for i in range(1,101,2))
print(gen_ob3.__next__())
print(gen_ob3.__next__())
print(gen_ob3.__next__())
print(gen_ob3.__next__())
#方法二
gen_ob4=(i for i in range(101) if i % 2 == 1)
print(gen_ob4.__next__())
print(gen_ob4.__next__())
print(gen_ob4.__next__())
print(gen_ob4.__next__())
#獲取全部的值:
for i in gen_ob4:
print(i)
# 一.迭代器 (補充)
# 1.如何判斷迭代對象,迭代器
# (1).dir(obj)檢測對象有沒有iter方法,然后it=obj.__iter__() 獲取迭代器 , it.__next__() 獲取元素.
s="我一定能學會一門計算機語言"
print(dir(s)) # 可以檢測字符串有沒有iter() 方法
it=s.__iter__() # 獲取迭代器
print(it.__next__()) # 獲取元素
print(it.__next__())
#(2).引入模塊
from collections import Iterable #(str,list,dict,tuple,set)
print(isinstance(s,Iterable)) # 結果是True 是可迭代對象
print(isinstance(s,Iterable)) # 結果是True 是迭代器
#二.構建生成器的方法:
# 1.生成器函數 有yield
# 2.生成器表達式
#三.生成器表達式
# 1.循環模式
# ( 變量 (加工后的變量) for 變量 in iterable )
l2 = [i for i in range(1, 14)] #列表推導式
print(l2)
gen_obj = (i for i in range(1, 14)) #生成器表達式
print(gen_obj)
print(gen_obj.__next__()) #取值
#加工后的變量
l1=["python%s期" %i for i in range(1,14)] #列表推導式
print(l1)
gen_obj1=("python%s期" %i for i in range(1,14)) #生成器表達式
print(gen_obj1.__next__()) #取值
# 列表推導式的優點:
#1.節省代碼;
#2.比較高大上
# 缺點: 不好排錯.
#整體評價:
# 凡是用列表推導構造的對象,用其他方式都可以構建.非常復雜列表,列表推導式構建不出來.
# 2.篩選模式
#( 變量 (加工后的變量) for 變量 in iterable if 條件 )
# (1)10以內所有數的平方
gen_ob = (i**2 for i in range(11))
print(gen_ob.__next__()) #0
print(gen_ob.__next__()) #1
print(gen_ob.__next__()) #4
#(2)30以內所有能被3整除的數的平方
gen_ob1=(i**2 for i in range(31) if i % 3 == 0)
print(gen_ob1.__next__())
print(gen_ob1.__next__())
print(gen_ob1.__next__())
print(gen_ob1.__next__())
#(3)100 以內所有的奇數.
#方法一
gen_ob3=(i for i in range(1,101,2))
print(gen_ob3.__next__())
print(gen_ob3.__next__())
print(gen_ob3.__next__())
print(gen_ob3.__next__())
#方法二
gen_ob4=(i for i in range(101) if i % 2 == 1)
print(gen_ob4.__next__())
print(gen_ob4.__next__())
print(gen_ob4.__next__())
print(gen_ob4.__next__())
#獲取全部的值:
for i in gen_ob4:
print(i)
轉載于:https://www.cnblogs.com/J-7-H-2-F-7/p/9204140.html
總結
以上是生活随笔為你收集整理的python全栈开发 * 14 知识点汇总 * 180530的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里首席架构师科普RPC框架是什么
- 下一篇: Linux学习笔记6月1日任务