迭代
可以通過(guò) for 循環(huán)來(lái)遍歷 list 或 tuple,這種遍歷我們稱(chēng)為迭代(Iteration)
只要是可迭代對(duì)象,都可以迭代,比如字典
默認(rèn)情況下,字典迭代的是key值
如何讓判斷一個(gè)類(lèi)型是否可迭代
from collections import Iterable #導(dǎo)入collections模塊的Iterable類(lèi)型判斷方法 print(isinstance({"abc":1},Iterable)) True列表生成式
Python 內(nèi)置的非常簡(jiǎn)單卻強(qiáng)大的可以用來(lái)創(chuàng)建 list的生成式
列表生成方法for循環(huán)
#輸出0~9之間偶數(shù)的平方 li= [] for i in range(0,10,2): li.append(i**2) li [0, 4, 16, 36, 64]
列表生成式
print([i**2 for i in range(0,10,2)]) [0, 4, 16, 36, 64]
列表生成式相對(duì)循環(huán)語(yǔ)句,代碼簡(jiǎn)潔
#找出1~100之間所有質(zhì)數(shù) #質(zhì)數(shù)(prime number)又稱(chēng)素?cái)?shù),有無(wú)限個(gè)。 #質(zhì)數(shù)定義為在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)。 def isprime(num): for i in range(2, num): if num % i == 0: return False else: return True val = int(input("請(qǐng)輸入一個(gè)數(shù):")) print([i for i in range(2, val) if isprime(i)]) 請(qǐng)輸入一個(gè)數(shù):100 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]字典生成式
#合并大小寫(xiě) #key值最終為小寫(xiě) d1={"a":10,"b":3,"A":10,"B":8} print({k.lower():d1.get(k.upper(),0)+d1.get(k.lower(),0)for k,v in d1.items()}) {"a": 20, "b": 11, "c": 13}生成器
通過(guò)列表生成式,我們可以直接創(chuàng)建一個(gè)列表,受到內(nèi)存限制,列表容量肯定是有限的
創(chuàng)建一個(gè)包含 100 萬(wàn)個(gè)元素的列表,占用很大的存儲(chǔ)空間
生成器是什么?
在循環(huán)的過(guò)程中不斷推算出后續(xù)的元素呢?這樣就不必創(chuàng)建完整的 list,從而節(jié)省大量的空間。在 Python 中,這種一邊循環(huán)一邊計(jì)算的機(jī)制,稱(chēng)為生成器(Generator)
讀取生成器next()
for循環(huán)
#Fibnonacci數(shù)列 #1,1,2,3,5,8,13,.... #yield:函數(shù)中帶有yield,那么這個(gè)函數(shù)的返回值就是一個(gè)生成器 #如果要執(zhí)行函數(shù)內(nèi)容,需要調(diào)用next方法或者for循環(huán) #當(dāng)執(zhí)行next方法時(shí),遇到y(tǒng)ield程序停止 #直到下一次next方法時(shí),從上一次yiled停止的地方繼續(xù)執(zhí)行,遇到y(tǒng)eild停止 def fibnnonacci(num): #num表示將來(lái)顯示幾個(gè)值 a,b,count = 0,1,0 #count是已經(jīng)顯示過(guò)的次數(shù) while count<=num: yield b a,b = b,a+b count+=1 res = fibnnonacci(100) print(next(res)) print(next(res)) print(next(res)) print(next(res)) 1 1 2 3 Process finished with exit code 0
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42250.html
摘要:定義字典存放鍵值對(duì),且值可以是任意的數(shù)據(jù)類(lèi)型集合常用方法第一個(gè)參數(shù)可以是列表元組字符串集合,將參數(shù)中每一個(gè)值作為值并且所有值都相同生成個(gè)銀行卡號(hào),默認(rèn)密碼為特性字典不支持索引,切片,重復(fù),連接。 定義 字典存放 key - value(鍵值對(duì)),且value值可以是任意的數(shù)據(jù)類(lèi)型 m ={sheen:[100,99,100],star:[97,100,100]} print(m,typ...
摘要:高階函數(shù)實(shí)參是一個(gè)函數(shù)名函數(shù)的返回值是一個(gè)函數(shù)傳遞的參數(shù)包含函數(shù)名。內(nèi)置高階函數(shù)函數(shù)函數(shù)接收兩個(gè)參數(shù)一個(gè)是函數(shù)一個(gè)是序列將傳入的函數(shù)依次作用到序列的每個(gè)元素并把結(jié)果作為新的返回。 高階函數(shù) 實(shí)參是一個(gè)函數(shù)名 函數(shù)的返回值是一個(gè)函數(shù) print(abs(-10)) f = abs print(f(-10)) #傳遞的參數(shù)包含函數(shù)名。 def myfun(x,y,fun): ...
摘要:集合定義集合里面的元素是不可重復(fù)的如何定義一個(gè)空集合默認(rèn)情況是,稱(chēng)為字典定義一個(gè)空集合集合應(yīng)用列表去重集合特性集合支持的特性只有成員操作符。 集合定義 集合里面的元素是不可重復(fù)的; s={1,1,2,3,4,2,2} print(s) {1, 2, 3, 4} 如何定義一個(gè)空集合? s1 = {} # 默認(rèn)情況是dict, 稱(chēng)為字典 print(s1,type(s1)) {} 定...
摘要:模塊是一個(gè)文件,以結(jié)尾,包含了對(duì)象定義和語(yǔ)句模塊讓你能夠有邏輯地組織你的代碼段。把相關(guān)的代碼分配到一個(gè)模塊里能讓你的代碼更好用,更易懂。命令執(zhí)行成功,執(zhí)行結(jié)果命令執(zhí)行失敗一秒后執(zhí)行關(guān)機(jī)命令 Python 模塊(Module) 是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Python 對(duì)象定義和Python語(yǔ)句 模塊讓你能夠有邏輯地組織你的 Python 代碼段。 把相關(guān)的代...
閱讀 1388·2021-10-08 10:04
閱讀 2713·2021-09-22 15:23
閱讀 2735·2021-09-04 16:40
閱讀 1187·2019-08-29 17:29
閱讀 1508·2019-08-29 17:28
閱讀 3004·2019-08-29 14:02
閱讀 2235·2019-08-29 13:18
閱讀 860·2019-08-23 18:35