我需要想出一个元组,其中包含一个值,后跟一些 None 值。 None 值的数量仅在运行时才知道。以下代码通过创建列表来完成工作:
def get_padded_tuple(self, value, tuple_length):
if tuple_length>0:
ret = [value] + [None]*(tuple_length - 1)
return tuple(ret)
raise IndexError('Tuple Length Not Supported', tuple_length)
def test_get_padded_tuple(self):
pprint(self.get_padded_tuple('a', 1))
pprint(self.get_padded_tuple('a', 5))
是否有更有效的方法,无需创建列表的开销?
编辑:我有一个模块,它采用元组的时间序列(日期、值1、值2等)并添加缺失的日期(日期、无,...) - 这本质上是左外连接之类的东西。不同的时间序列具有不同长度的元素,这就是为什么我想使用与时间序列中的元素长度相同的元组,如果有一种轻量级的方法来实现这一点 - 否则我可以只使用列表。
最佳答案
return (value,) + (None,) * (tuple_length - 1)
或
return tuple(None if i else value for i in xrange(tuple_length))
或
return tuple([value, None][i > 0] for i in xrange(tuple_length))
关于python - 有没有更轻量级的方法来获取可变长度的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28323196/