首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python中三重嵌套循环的替代方案

python中三重嵌套循环的替代方案
EN

Stack Overflow用户
提问于 2019-06-05 08:46:27
回答 3查看 2.2K关注 0票数 0
代码语言:javascript
复制
url_list = ['www.scrape.com/file1', 'www.scrape.com/file2', ''www.scrape.com/file3'] 

category_id_list = ['12345','abcde','ABCDE']

zip_list = ['10075','10017','10028']

我有三个变量用来创建一个被请求的URL。按顺序: url_list+zip+categoryid

然后,该url被传递到一个具有抓取代码的函数中。

我使用3for循环遍历这些列表,但这是高度冗余的

代码语言:javascript
复制
for url_ in url_list:
   for category_id in category_id_list:
       for zip_ in zip_list:

           request_url = url_+category_zip_
           func(request_url)

这样就行了,但是有没有更好的方法呢?谢谢!

EN

回答 3

Stack Overflow用户

发布于 2019-06-05 08:55:28

您可以使用itertools.product

代码语言:javascript
复制
import itertools

for url in (str.join("",url) for url in itertools.product(url_list,category_id_list,zip_list)):
    func(url)
票数 3
EN

Stack Overflow用户

发布于 2019-06-05 10:14:43

这可能有点晚了,但我是这样做的:

代码语言:javascript
复制
cats = ["a","b","c","d"]

zips = ["25320","53902","59607","53123"]

base = "https://example.com"

for i in range(4):
   url = "{}/{}/{}".format(base, cats[i], zips[i])
   print(url)

输出:

代码语言:javascript
复制
https://example.com/a/25320
https://example.com/b/53902
https://example.com/c/59607
https://example.com/d/53123
票数 0
EN

Stack Overflow用户

发布于 2019-12-21 03:14:08

避免编写多个for循环的一种方法是使用zip.It,它允许您一次访问每个列表中的第i个元素。所以你可以这样做:

代码语言:javascript
复制
url_list = ['www.scrape.com/file1', 'www.scrape.com/file2', 'www.scrape.com/file3']
category_id_list = ['12345','abcde','ABCDE']
zip_list = ['10075','10017','10028']

for url, id, zip in zip(url_list, category_id_list, zip_list):
    request_url = url + id + zip
    func(request_url)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档