有没有办法在定义列表时有条件地将项目添加到列表中? 这就是我的意思:
l = [
Obj(1),
Obj(2),
Separator() if USE_SEPARATORS,
Obj(3),
Obj(4),
Obj(5),
Separator() if USE_SEPARATORS,
Obj(6)
]
显然上面的代码是行不通的,请问有没有类似的方法呢?
目前我有
l = [item for item in (
Obj(1),
Obj(2),
Separator() if USE_SEPARATORS,
Obj(3),
Obj(4),
Obj(5),
Separator() if USE_SEPARATORS,
Obj(6)
) if not isinstance(item, Separator) or USE_SEPARATORS]
但我想知道是否有其他方法不需要遍历列表,因为它们可能有 10 000 个项目,并且在我执行代码时服务器会停止四分之一秒左右。 它适用于第一人称射击游戏,因此四分之一秒实际上可能会对某人的生死产生影响。
最佳答案
另一种方法是使用 splat/unpacking 运算符将元素展开为分隔符或什么都不展开:
possible_separator = (Separator(),) if USE_SEPARATORS else ()
l = [
Obj(1),
Obj(2),
*possible_separator,
Obj(3),
Obj(4),
Obj(5),
*possible_separator,
Obj(6)
]
关于python - 定义列表时有条件地将项目添加到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28878602/