问题描述
我有一个包含一些值的元组,我想以嵌入方式发送它们。他们在这样的字典里
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 中没有元组推导式,因为元组是不可变的。