网页爬虫 - Python中我自定义了一个函数,每次对一个keyword进行运算,现在我有300个keyword,如何批量操作?
怪我咯
怪我咯 2017-04-18 09:34:52
[Python讨论组]

Python中我自定义了一个函数,每次对一个keyword进行运算,现在我有300个keyword,如何批量操作?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
PHP中文网

利用map。假设函数名为myfunc, 所有的keyword存入变量keywords

map(myfunc, keywords)

如果有返回,map将以列表形式返回值。
如果要并行运行,请参考
http://adf.ly/1dmcH9

大家讲道理

從題主問出這個問題可以看出來, 可能你對計算機與編程的基本精神還沒有完全掌握, 需要更注意的是程式的精神而非解法, 這邊我針對這個問題提出一點淺見。

我們為什麼需要計算機來幫助運算, 關於算法或執行算法的運算我相信人類也能夠操作, 但是計算機具備了

  1. 精準 (不出錯)

  2. 強記憶力 (容量足夠的話)

  3. 效率高

  4. 不像人類會疲乏或感到無聊, 可以 重複 地執行相同或相似的運算

第四點是個關鍵, 不想要一個一個輸入 keyword 而想要一次性地完成工作, 所以需要 program 來幫我們進行這 300 次的重複, 在編程中靠的是 loop, 靠的是 iteration, 靠的是 recursion。

所以這個問題就在於我們必須藉由 programming language 中的能夠完成重複的方法來達成目的, 在 Python 中, 不論是 while, for 甚至是遞歸都能幫助我們執行重複, 一個簡單的做法是:

for keyword in keywords:
    dosomething(keyword)

如果需要保存結果:

results = []

for keyword in keywords:
    result = dosomething(keyword)
    results.append(result)

當然換成 while 或是 recursion 也做得到。

至於 @flyeblue 大給的解法, 在 執行完的結果 是重點的情況下非常有用, 可以簡潔地得到 results:

results = map(dosomething, keywords)

P.S. map 的回傳值在 Python2 中是 return list, 在 Python3 中是 return map object

但我覺得對題主來說重要的是, 下次再碰到相同需求的時候, 能否想到 讓程式來執行重複 是解決問題的方法, 從而想到 for loop 或 while 或 recursion 或 map 或任何跟 iteration 和 repeat 有關的東西, 這才是真正的關鍵點!

感謝各位忍受我的嘮叨!


我回答過的問題: Python-QA

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号