繁体   English   中英

如何修改列表理解中的变量?

[英]How can I modify a variable in a list comprehension?

有没有办法在以下代码中每次循环运行一次重新分配alt_index

alt_index = random.randint(0, len(validinfo) - 1)

到那个列表:

futures = [
    session.post(f"https://api.mojang.com/user/profile/{validinfo[alt_index].rpartition(':')[-1].rpartition(':')[-1]}/name", headers={'Authorization': "Bearer "+validinfo[alt_index].rpartition(':')[0].rpartition(':')[-1]}, json={"name": TARGET,"password": validinfo[alt_index].rpartition(':')[0].rpartition(':')[0].rpartition(':')[-1]})
    for i in range(TRIES)
]

每个请求都应该使用不同的alt_index ,但在同一个表达式中它必须是相同的。 我使用它来使每个请求都使用来自 txt 文件的不同数据。 当我添加alt_index = random.randint(0, len(validinfo) - 1)列出它会引发错误,我不知道如何解决这个问题。

你有一个列表理解,你想做“额外的工作”。 虽然有多种技巧可以将所有内容打包在一行中,但您可以简单地退回到正常的 for 循环。 任何列表推导[f(x) for x in y if g(x)]都可以扩展为 for 循环:

return_list = []
for x in y:
    if g(x):
        return_list.append(f(x))

您可以在其中使用 then 有更复杂的表达式,在您的情况下,相应的 for 循环将如下所示:

futures = []

for i n range(TRIES):
    futures.append(session.post(f"https://api.mojang.com/user/profile/{validinfo[alt_index].rpartition(':')[-1].rpartition(':')[-1]}/name", headers={'Authorization': "Bearer "+validinfo[alt_index].rpartition(':')[0].rpartition(':')[-1]}, json={"name": TARGET,"password": validinfo[alt_index].rpartition(':')[0].rpartition(':')[0].rpartition(':')[-1]}))

您现在可以在该 for 循环中重新分配alt_index 拥有一些中间值可能也是一个好主意,以使那条长线更容易阅读,例如您通常在那里有validinfo[alt_index].rpartition(':')[0] ,这将是一个很好的候选者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM