我開始學習如何以功能的方式使用python,並且遇到了我無法解決的問題。如何在地圖上應用n次函數
我有下面的代碼(帶部分來自this question),這不正是我想要的:
url = "www.testpage.com/"
def gen_url(prefix, suffix, places=3):
pattern = "{}{{:0{}d}}{}".format(prefix, places, suffix)
for i in count(1):
yield pattern.format(i)
list_of_urls = []
for c in "xyz":
g = gen_url(url+c,"&show=more")
for x in range(2):
list_of_urls.append(next(g))
它產生這樣的:
www.testpage.com/x001&show=more
www.testpage.com/y001&show=more
www.testpage.com/z001&show=more
www.testpage.com/x002&show=more
www.testpage.com/y002&show=more
www.testpage.com/z002&show=more
正如你所看到的,它在002停止因爲:
...
for x in range(2):
list_of_urls.append(next(g))
...
所有的時間我一開始empy列表,u選擇一個for循環並填充它。我試圖用這種方式使用map並擺脫for循環:
urls = map(lambda x:next(gen_url(url+x,"&show=more")),"xyz")
它的工作原理。但我只能達到001.假設我想達到002;我想類似下面的,但它不工作:
urls = imap((lambda x:next(gen_url(url+x,"&show=more")),"xyz"),2)
而這也不起作用:
urls = map((lambda x:next(gen_url(url+x,"&show=more")),"xyz"),repeat(2))
有人能解釋我如何正確使用迭代器在這案件?
謝謝,它完美的作品。僅供將來參考:您是否有任何建議以我嘗試的方式進行此操作?我的意思是,如何重複地圖? – Angelo
我不認爲你可以輕鬆地通過''xyz「 – zerkms