我需要将
list_
中的所有元素添加到一个string
中,最后需要添加一个后缀。一个点'.'必须分隔所有元素:list_ = args[f(n) : f(n+1)]
if list_:
string += '.' + '.'.join(list_) + '.' + suffix # works except when list_ is empty
else:
string += '.' + suffix
# list_ isn't used after this
我能不能简单地用一行话来重写它?如果 join
在每个元素后面添加一个分隔符,那么它就是这样的:
string += '.' + '.'.join(args[f(n) : f(n+1)]) + '.' + suffix
编辑
我刚学到:
即使从未分配,切片也是副本:Python在字符串上进行切片引用吗?
但islice可能更糟,因为它遍历列表的开头:itertools.islice与list slice比较
这里讨论了一些替代方案:在Python中避免不必要的切片复制
itertools.islice(list_, f(n), f(n+1))
。 - David Zislice
在列表上的性能非常差...如果我有一个真正的生成器,我会使用这种方法。 - max