在 f 字符串中循环作为嵌入的值

问题描述

我有一个包含一些值的元组,我想以嵌入方式发送它们。他们在这样的字典里 dict = {key: [(1,2,3),other values here],other key: [(1,3,4,5),other values here]}

在这里的一些元组长度不同,如果我使用循环添加嵌入字段,它会触发我,因为 discord 还不允许 name 参数为 false 或 null。如果我使用 0 宽度的空白字符,那么我宁愿没有一个很大的空间。尝试使用三元运算符,但没有奏效。我也不能有这个 for i in range(0,len(dict) - 1): pass 因为循环在我可以使用它来索引元组之前就已经结束了。我也试过

value = f'{tuple[i] for i in range(0,len(tuple) - 1)}'

但机器人返回 <generator object stats.<locals>.<genexpr> at 0x0000012E94AB3200> 而不是元组中的值。

编辑:

感谢回答的人!现在可以了,谢谢

解决方法

tuple[i] for i in range(0,len(tuple) - 1)

是一个生成器表达式,它不会产生任何值,除非被循环或 list() 之类的东西消耗

您可以改用等效的列表推导式:

f'{[tuple[i] for i in range(0,len(tuple) - 1)]}'

或者把生成器放在一个 list()

f'{list(tuple[i] for i in range(0,len(tuple) - 1))}'
,

因为您的理解没有包含在 [] 中,所以它在技术上是一个生成器表达式 ()(不过我认为这在 python 2.7 中会起作用),试试这个:

my_tuple = (1,2,3,4)

f'{[my_tuple[i] for i in range(0,len(my_tuple) - 1)]}'

输出:

[1,3]

此外,python 中没有元组推导式,因为元组是不可变的。