滴滴面試題 Python 迭代器與生成器

2021-10-07 02:14:53 字數 1010 閱讀 2554

(1)迭代器是用來訪問集合元素的一種方式。

(2)迭代器物件從集合的第乙個元素開始訪問,直到結束,迭代器只會前進不會後退。

(3)迭代器有2個基本方法:iter(),next()。

4)字串,列表,元組都可用於建立迭代器。

#s = "abcdef"

#s = ['a', 'b', 'c']

s = ('a', 'b', 'c')

#建立迭代器物件

s_iter = iter(s)

#遍歷元素

#1、for迴圈遍歷

for x in s_iter:

print (x)

#2、next()方法遍歷,見下面的生成器例子

(1)使用了yield的函式被稱為生成器。

(2)生成器是乙個返回迭代器的函式,只能用於迭代操作。所以呼叫乙個迭代器函式,返回的是乙個迭代器物件。

(3)呼叫生成器函式時,每次遇到yield時,函式會儲存當前執行的引數的資訊,並返回yield的值,下一次呼叫next()方法時從上次保留的位置繼續執行

import sys

def func(n):

#因為有yield所以這個函式是乙個生成器函式

while n < 5:

n += 1

yield n

f = func(0) #f是乙個迭代器物件

#1、可以使用for迴圈遍歷迭代器對應

for x in f:

print (x)

#結果: 1 2 3 4 5

#2、也可以使用next()方法進行迭代

while true:

try:

print (next(f))

except stopiteration:

sys.exit()

#結果: 1 2 3 4 5

滴滴面試題

1 快速排序和二分排序選乙個手寫。手寫了乙個快排。2 手寫乙個 eventemitter。3 手寫兩個陣列的交集。兩層 for 迴圈。將兩陣列排序後,使用雙指標去判斷。4 webpack 執行流程,seal 方法之後都有什麼?什麼時候生成 chunk 5 ts 中 thistype 是什麼?this...

滴滴實習面試題

本文寫於 2020 年 8 月 13 日 前兩天在滴滴進行了前端實習面試,有幾道題卡了一下。乙個陣列裡可能是基本資料型別,也可能是陣列,陣列裡還能巢狀陣列,例如 1,2,4,5,7 9 請將陣列扁平化,全部變成一維陣列 1,2,4,5,7,9 我第一次聽題目的時候沒聽清,所以直接寫了一次遍歷,判斷是...

關於迭代器的面試題

include include include using namespace std void printmy vector int main itor printmy vecint return 0 void printmy vectorvec 問輸出是幾?在dev編譯執行以後,結果是3,程式設...