从Python中的第二个列表创建具有多个对象实例的单个列表

2024-04-26 23:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个xml文件中为棋盘游戏构建一个平铺列表,该文件包含了平铺的描述。xml文件描述了每种磁贴类型,以及该类型的磁贴数量。在

到目前为止,我得到了以下代码,该代码创建了一个列表,其中正好包含每种平铺类型中的一种:

    [Tile(el.id) for el in <tile descriptions>]

我想创建一个列表,列出每个图块的适当数量,例如:

^{pr2}$

是否有一个优雅的一行代码来完成这项工作,或者我需要通过为每个平铺类型创建一个列表,然后连接来完成它?在


Tags: 文件代码inid游戏类型列表for
2条回答

怎么样:

[Tile(el.id) for el in <tile descriptions> for _ in range(el.n_tiles)]

您发布的代码将多次重复相同的内部列表:

[Tile(el.id) * <el.n_tiles> for el in <tile descriptions>]

相反,使用内部列表理解:

^{pr2}$

如果目标是创建单个串联列表,则可以使用嵌套for循环的列表理解:

[Tile(el.id) for el in <tile descriptions> for i in range(<el.n_tiles>)]

当您稍微高级一点时,可以使用itertools.chain.from_iterable实现相同的效果(列表扁平化)。在

希望这有帮助。游戏快乐:-)

相关问题 更多 >