迭代器(iterator)
迭代器用來為類序列物件提供乙個類序列的介面。迭代器就是生成乙個有next()方法的物件,而不是通過索引來計數。
序列、字典、檔案中當使用for x in y的結構時,其實質就是迭代器,迭代器是和實際物件繫結在一起的,所以在使用迭代器時或者上述3者時不能修改可變物件的值。這會產生錯誤。如:在使用for x in y的結構來遍歷字典時刪除符合條件的字典內容,這會導致報錯。
建立迭代器的方法:iter(object)和iter(func,sentinel)兩種。一種使用的是序列,另一種使用類來建立。
列表解析(list comprehensions)
主要用來動態的建立列表,和map()、filter()和reduce()一樣可以用來產生列表。和生成器不同的是,列表解析一次生成乙個列表,所佔記憶體較大。
列表解析的擴充套件版本語法:[exprforiter_variniterableifcond_expr]
生成器
生成器是特定的函式,允許你返回乙個值,然後「暫停」**的執行,稍後恢復。生成器使用了「延遲計算」,所以在記憶體上面更加有效。
生成器表示式:(exprforiter_variniterableifcond_expr)
練習,使用檔案讀取,找出檔案中最長的行的。最精簡答案:max(len(x.strip()) for x in open('/etc/motd','r'))
python中列表解析
列表解析 a 1,2,3,4 b 2,3,4,5 b item for item in a 通過for迴圈將a中的元素取出來放在item中,並將item放在列表b中 print b 1,2,3,4 元素和a一模一樣 b1 item 1 for item in a 將a中的元素取到item中,並把 i...
python列表解析
列表解析是乙個列表對映出另乙個列表,它的基本形式是乙個方括號裡面包含乙個for語句對乙個iterable物件迭代 expression for target1 in iterable1 if condition1 for targetn in iterablen if conditionn 上面是列...
python 列表解析
m 1,2,3 4,5,6 7,8,9 col2 row 1 for row in m 獲取列表m的每個元素的第二個元素的值組成的列表 print col2 print row 1 1 for row in m 獲取列表m的每個元素的第二個元素 1的值組成的列表 print row 1 for ro...