将项目从一个列表带到另一个列表的更清洁方法

Posted

技术标签:

【中文标题】将项目从一个列表带到另一个列表的更清洁方法【英文标题】:Cleaner Way to Take Items from One List to Another 【发布时间】:2013-08-28 17:06:26 【问题描述】:

我一直在写一个文字冒险游戏,有一次我需要从一个列表中取出一个由用户输入给出的项目并将其移动到另一个列表。具体来说,当您知道项目名称时,除了以下内容之外,还有什么方法可以获取项目的索引:

list_one = ["item one", "item two"]
index_one = list_one.index("item one")

我在脚本中使用的代码是:

player.items.append(start_room.items.pop(start_room.items.index(next)))

接下来是输入,这看起来很混乱。如果有更简单的方法来解决这个问题,请告诉我。谢谢!

【问题讨论】:

列表中项目的顺序重要吗?列表可以包含重复项吗?如果两者的答案都是“否”,您应该使用集合而不是列表。 你可以在这里试试codereview.stackexchange.com/questions/tagged/python ;) 顺便说一句,不要将变量命名为next,它会影响内置函数next() 【参考方案1】:

如果您已经知道该项目,则无需致电indexpop 或其他:

list_one.remove (item)
list_two.append (item)

【讨论】:

【参考方案2】:

我更喜欢使用pop() 的返回方法:

list_two.append( list_one.pop( list_one.index( item ) ) )

如果你突然决定需要索引,你不需要做太多改变:

i = list_one.index( item )
list_two.append( list_one.pop( i ) )

【讨论】:

以上是关于将项目从一个列表带到另一个列表的更清洁方法的主要内容,如果未能解决你的问题,请参考以下文章

WPF - 将列表带到树的好方法

我想将选定的项目从一个列表移动到另一个

将列表框选定项从一个 wpf 页面发送到另一个页面

如何使用python中的映射函数将项目从一个列表减去另一个列表

如何使用 Vue draggable 将组件列表中的项目拖动到另一个组件中的列表?

如何让 splice() 方法在我的待办事项列表中工作?