Python避免嵌套For循环

Python避免嵌套For循环,python,loops,for-loop,nested,Python,Loops,For Loop,Nested,我是python编程新手,我在一个宠物项目上工作,弄得手脚都脏了 为了避免这些嵌套for循环,我做了很多尝试,但没有成功 如果需要更多信息,请告诉我。问题 我在循环中有太多的循环,需要一种python方式来清理它 答复 是的,有一种python方法可以清理循环中的循环以使其看起来更好,但是在封面下仍然会有循环中的循环 import requests import json r = requests.get('https://api.coinmarketcap.com/v1/ticker/')

我是python编程新手,我在一个宠物项目上工作,弄得手脚都脏了

为了避免这些嵌套for循环,我做了很多尝试,但没有成功

如果需要更多信息,请告诉我。

问题 我在循环中有太多的循环,需要一种python方式来清理它

答复 是的,有一种python方法可以清理循环中的循环以使其看起来更好,但是在封面下仍然会有循环中的循环

import requests
import json

r = requests.get('https://api.coinmarketcap.com/v1/ticker/')
j = r.json()

id_list = [item['id'] for item in j]

for n in id_list:
    url = 'https://api.coinmarketcap.com/v1/ticker/%s' %n
    req = requests.get(url)
    js = req.json()
    print "\n".join([ n+"\n"+item['rank'] for item in js ])
运行此应用程序的洞察力 在运行了这个特定的代码之后,我意识到您实际上首先使用

然后使用

url = 'https://api.coinmarketcap.com/v1/ticker/%s' %n
获得军衔

只要继续按排名顺序返回项目,您就可以像这样简化代码

import requests
import json

r = requests.get('https://api.coinmarketcap.com/v1/ticker/')
j = r.json()

id_list = [item['id'] for item in j]

result = zip(id_list,range(1,len(id_list)+1) )

for item in result :
print item[0]
print item[1]
对补充问题的答复
附加问题:如果我还需要一个参数,比如说价格?美元。。。。。对于js中的酷:print n print cool['rank']print cool['price_usd']

答复:

换线

print "\n".join([ n+"\n"+item['rank'] for item in js ])


你的第一个请求已经得到了你所需要的一切

import requests
import json

response = requests.get('https://api.coinmarketcap.com/v1/ticker/')
coin_data = response.json()

for coin in coin_data:
    print coin['id'] # "bitcoin", "ethereum", ...
    print coin['rank'] # "1", "2", ...
    print coin['price_usd'] # "2834.75", "276.495", ...

有时需要嵌套for循环。这看起来像是其中的一次。我得到了很多数据,而嵌套for循环太耗时了:不过我理解你的观点。感谢您的反馈。为了避免编写嵌套循环,您可以创建一个函数来解析包含内部for循环的js。请注意,从技术上讲,这仍然包含嵌套循环,但您的代码至少会显得更平坦。@Master取消嵌套for循环的原因通常是为了使其更可读或更易于维护。它几乎不会提高速度。@Master您是否重复请求相同的url?看起来降低复杂性/时间的唯一方法是减少请求的数量。如果每个请求都是唯一的,我不知道你怎么做。如果我想要一个参数,比如price_usd,该怎么办。。。。。对于js中的cool:print cool['price_usd']我更新了响应以获得额外的答案。感谢您的输入并解释了编写代码的pythonic方式:不要说谢谢,只需向上投票和/或接受答案。干杯,我不能投票,因为我的声誉太低了。另外,贾里德·高根的回答为我节省了很多执行时间:但是,我感谢你帮助我。尊敬。感谢您的回复。
print "\n".join([ n+"\n"+item['rank'] for item in js ])
print "\n".join([ n+"\n"+item['rank']+"\n"+cool['price_usd'] for item in js ])
import requests
import json

response = requests.get('https://api.coinmarketcap.com/v1/ticker/')
coin_data = response.json()

for coin in coin_data:
    print coin['id'] # "bitcoin", "ethereum", ...
    print coin['rank'] # "1", "2", ...
    print coin['price_usd'] # "2834.75", "276.495", ...