繁体   English   中英

For Loop追加到另一个列表

[英]For Loop Append to list from another

我正在为我正在设计的游戏进行“全部提取”和“全部删除”。 玩家有一个清单(清单),每个房间都有自己的清单以跟踪里面的内容。 当它是特定项目时,我可以轻松地从相应列表中添加或删除该项目,但是对于所有项目而言,我不确定如何进行。 (注意:我不知道库存中有多少物品,因为随着玩家取放物品而改变)

ROOMNAMEinventory = ['lamp', 'coin']
inventory = ['string']
do = raw_input("What would you like to do?").upper()
if(do == 'drop all'):
  for items in ROOMNAMEinventory:
    inventory.append(items)
    ROOMNAMEinventory.remove(items)
print inventory
print ROOMNAMEinventory

当前,此打印输出:

['string', 'lamp']
['coin']
None

为什么打印无?

Python中的List支持将一个添加到另一个:

roomname_inventory = ['lamp', 'coin']
inventory = ['string']
do = raw_input("What would you like to do?").upper()
if (do == 'DROP ALL'):
    inventory += roomname_inventory
    roomname_inventory = []
print inventory
print roomname_inventory

但是,如果只想在迭代列表时放弃修改列表,则可以执行以下操作:

if (do == 'DROP ALL'):
    while roomname_inventory:
        inventory.append(roomname_inventory.pop(0))

这里有2个错误

  1. 您转换为大写字母,但测试较低的字母!
  2. 您应该迭代ROOMNAMEinventory的副本,不建议在迭代时修改列表:将列表更改为['string', 'lamp'] and ['coin'] :不是您想要的

固定代码:

ROOMNAMEinventory = ['lamp', 'coin']
inventory = ['string']
do = raw_input("What would you like to do?").upper()
if(do == 'DROP ALL'):  # upper vs upper: could work :)
  for items in ROOMNAMEinventory[::]:  # iterate on a copy of the list
    inventory.append(items)
    ROOMNAMEinventory.remove(items)
print inventory
print ROOMNAMEinventory

结果(输入drop all

['string', 'lamp', 'coin']
[]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM