给出一个带有唯一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)
答案 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])