python中迭代器 列表解析 生成器的分析比較

2022-02-09 13:51:48 字數 837 閱讀 5512

迭代器(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...