Python如何一次遍历一个列表中的100个元素,直到到达所有元素?

时间:2019-06-09 21:26:15

标签: python python-3.x python-3.6

给出一个带有唯一ID列表并将其发送到API端点进行处理的process_list函数。列表的限制为一次100个元素。

如果我的列表中有100个以上的元素,如何处理前100个,然后是下一个100,直到达到n?

my_list = [232, 231, 932, 233, ... n]
# first 100
process_list(my_list[:100])


def process_list(my_list):
    url = 'https://api.example.com'
    data = {'update_list': my_list}
    headers = {'auth': auth}
    r = requests.put(url, data=json.dumps(data), headers=headers)

3 个答案:

答案 0 :(得分:4)

尝试简化,因为我假设您是从Python开始的

迭代列表,每次迭代增加一百个

my_list = [i for i in range(10123)]
for i in range(0, len(my_list), 100)
    process_list(my_list[i:i+100])


def process_list(my_list)
    url = 'https://api.example.com'
    data = {'update_list': my_list}
    headers = {'auth': auth}
    r = requests.put(url, data=json.dumps(data), headers=headers)

关于如何使用docs中的 range ,有两种选择:

  

范围(开始,停止[,步骤])

  

范围(停止)

使用第一个选项,您可以遍历序列0, 100, 200, ...

答案 1 :(得分:4)

这是itertools文档中的食谱,可能会有所帮助:

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

像这样使用它:

def process_list(my_list):
    url = 'https://api.example.com'
    for group in grouper(mylist):
        data = {'update_list': list(group)}
        headers = {'auth': auth}
        r = requests.put(url, data=json.dumps(data), headers=headers)

答案 2 :(得分:0)

您也可以使用

for i in range((len(my_list)//100)+1):
    process_list(my_list[i*100:(1+i)*100])