循环列表和更改索引

时间:2014-07-07 00:57:50

标签: python list loops zip flickr

我正在处理这段代码,基本上是创建一个bbox并将这个bbox分成很多较小的bbox,因为一个只能通过一个请求访问4000个metadatas。

#borders of the bbox
longmax = 15.418483 #longitude top right
longmin = 4.953142 #longitude top left
latmax = 54.869808 #latitude top 
latmin = 47.236219 #latitude bottom


#longitude
longstep = longmax - longmin 
longstepx = longstep / 10 #longitudal steps the model shall perfom

print (longstepx)


#latitude
latstep = latmax - latmin
latstepx = latstep / 10 #latitudal steps the model shall perform

print(latstepx)


#create list of steps through coordinates longitude
llong = []
while longmin < longmax:
    longmin+=longstepx
    llong.append(+longmin)

print (len(llong)) #make sure lists have the same lengths


#create list of steps through coordinates latitude
llat = []
while latmin < latmax:
    latmin+=latstepx
    llat.append(+latmin)

print (len(llat)) #make sure lists have the same lengths


#create the URLs and store in list
urls = []
for lat,long,lat1,long1 in (zip(llat, llong,llat[+1],llong[+1])):
    for pages in range (1,5):
        print ("https://api.flickr.com/services/rest/method=flickr.photos.search&format=json&api_key=5..b&nojsoncallback=1&page={}&per_page=500&bbox={},{},{},{}&accuracy=1&has_geo=1&extras=geo,tags,views,description".format(pages,lat,long,lat1,long1))
print (urls)

直到最后一部分工作正常,从创建列表“urls”开始。 我希望循环遍历列表llat和llong并浏览这些列表,只比前两个值更多。

llong    llat  
4 5 6 7   8 9 10 11

我希望它采用(zip(llong,llat)值“4”和“8”(有效)然后用 (zip(llong [+1],llat [+1])值“5”和“9”并将它们插入到我的链接中。 此外,我希望它插入pagenumbers。 理想情况下,循环创建了一个带有四个数字4,5,8,9的链接。然后我希望它创建4个链接,数字范围为1:5,保存链接并继续下面的四个数字等等。

但这根本不起作用......

嗯,我希望我表达得足够清楚。 我不是在寻找一个随时可用的解决方案。我想学习,因为我对python很新。

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你打算写:

#create the URLs and store in list
urls = []
for lat, long, lat1, long1 in (zip(llat, llong, llat[1:], llong[1:])):
    for page in range (1,5):
        print ("https://api.flickr.com/services/rest/method=flickr.photos.search&format=json&api_key=5..b&nojsoncallback=1&page={}&per_page=500&bbox={},{},{},{}&accuracy=1&has_geo=1&extras=geo,tags,views,description".format(page, lat, long, lat1, long1))

注意区别:

In [1]: L = [1,2,3]

In [2]: L
Out[2]: [1, 2, 3]

In [3]: L[1]
Out[3]: 2

In [4]: L[1:]
Out[4]: [2, 3]

另外,请注意我们可以替换它:

llong = []
while longmin < longmax:
    longmin+=longstepx
    llong.append(+longmin)

有了这个:

llong = range(longmin + longstepx, longmax + longstepx, longstepx)

但我想你想要这个,包括你所在地区的longmin,并且不包括longmax(与原始代码相反)。

llong = range(longmin, longmax, longstepx)