我有一个非常具体的用例来创建列表理解,但我在弄清楚如何去做时遇到了一些麻烦。我确信一定有一种方法或函数可以帮助我,但我想我不知道。
场景如下:以下代码按预期工作并生成所有预期的变化(总共 8 个)
List_A = ["apples","oranges"]
List_B = ["meat","chicken"]
flexibility = range(2)
list = []
for a in List_A:
results = [(day, b, a) for day in flexibility for b in List_B]
list.append(results)
print (list)
Run Code Online (Sandbox Code Playgroud)
结果
[[(0, 'meat', 'apples'), (0, 'chicken', 'apples'), (1, 'meat', 'apples'), (1, 'chicken', 'apples')],
[(0, 'meat', 'oranges'), (0, 'chicken', 'oranges'), (1, 'meat', 'oranges'), (1, 'chicken', 'oranges')]]
Run Code Online (Sandbox Code Playgroud)
问题就在这里。假设我的速率限制为每秒 5 次调用,并且上面的列表创建了 8 个元素,因此我会超出速率限制。我认为可以克服这个问题的方法是创建另一个变量来传递给函数,该函数将使用不同的帐户来发出我的 api 请求。理论上,每个帐户只会发出 5 个请求。因此,在上面的示例中,列表的前 5 个元素将使用帐户 0,其余 3 个元素将使用帐户 1。我尝试使用列表理解来实现此目的,但结果不是我所期望的:
no = [0,1,2]
List_A …Run Code Online (Sandbox Code Playgroud)