迭代列表中每个项目的函数

时间:2012-11-01 00:00:58

标签: python list function loops

在这里,我创建了一个我希望通过函数运行的网站列表。

import requests

item_ids=[11732, 536]
url_template = 'http://www.grandexchangecentral.com/include/gecgraphjson.php?jsid=%r'
your_sites = []

for i in range(0, len(item_ids)):
    result = url_template % item_ids[i]
    your_sites.append(result)

棘手的部分(对我来说,无论如何)是创建一个函数,它接受your_sites中的每个项目并通过函数迭代它。我想过使用某种for循环,但我不知道如何实现它,并认为无论如何可能有更高效的方式。这是我的尝试,返回TypeError: 'NoneType' object is not iterable

def data_grabber(): 
    for i in range(0, len(your_sites)): 
        url = your_sites[i]
        r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'})
        data = r.json
        prices = [i[1] for i in data]

我希望每个网站都返回prices,但我只能为我的努力获取错误和无价值。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

不要将your_sites设为全局变量,将其作为参数传递非常容易。您不需要for循环的显式索引,只需迭代您感兴趣的对象。当您执行需要显式索引时,请使用enumerate()

def data_grabber(your_sites): 
    for url in your_sites: 
        r = requests.get(url, headers={'Referer': 'www.grandexchangecentral.com'})
        data = r.json   # if r.json None the next line will fail
        prices = [i[1] for i in data]

如果r.json为空,则不确定要执行的操作。你可以试试这样的东西

        data = r.json or []