其他分享
首页 > 其他分享> > 定义列表时有条件地将项目添加到列表?

定义列表时有条件地将项目添加到列表?

作者:互联网

定义列表时,是否可以有条件地将项目添加到列表中?
这就是我的意思:

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]

但是我想知道是否还有另一种方式不需要遍历列表,因为它们的长度可以是10000,并且当我执行代码时服务器会停止四分之一秒左右.
这是针对第一人称射击游戏的游戏,因此,四分之一秒实际上可能会对垂死或存活的人产生影响.

解决方法:

之后,我将其插入;列表毕竟是可变的:

l = [
    HeadObj(1),
    HeadObj(2),
    BodyObj(1),
    BodyObj(2),
    BodyObj(3),
    FooterObj(1)
]
if USE_SEPARATORS:
    l.insert(2, Separator())
    l.insert(6, Separator())

标签:python-3-x,list,python,list-comprehension
来源: https://codeday.me/bug/20191028/1953626.html