以下是我的清单示例。 我想枚举此列表中的每个嵌套列表,仍然能够以相同的格式打印列表列表。 在我枚举这些嵌套列表之后,我还想通过枚举进行索引,以便按编号搜索主列表。 这有可能吗?
weaponstore = [['Slingshot', 5, 20],['Leather Sandals', 5, 40],['Wooden Sword', 15, 100]]
我想列举列表' weaponstore'以后它会是:
weaponstore = [[0, 'Slingshot', 5, 20],[1,'Leather Sandals', 5, 40],[2,'Wooden Sword', 15, 100]]
答案 0 :(得分:0)
使用理解和enumerate
。 (创建一个新列表。)
[[i] + l for i, l in enumerate(weaponstore)]
或就地。 (修改武器库。)
for i, l in enumerate(weaponstore):
l.insert(0, i)
答案 1 :(得分:0)
这个怎么样?使用python list comprehension。
>>> [[i] +j for i, j in enumerate(weaponstore)]
[[0, 'Slingshot', 5, 20], [1, 'Leather Sandals', 5, 40], [2, 'Wooden Sword', 15, 100]]
答案 2 :(得分:0)
在项目中存储项目索引没有任何好处。看起来您可能只想将武器商店打印为编号列表,以便用户可以更轻松地选择他们想要的那个。您不应该将索引放入每个项目中,而应该只显示它而不更改数据结构:
>>> weaponstore = [['Slingshot', 5, 20],['Leather Sandals', 5, 40],['Wooden Sword', 15, 100]]
>>> for idx,item in enumerate(weaponstore):
... print('#{}: {}\nQuantity: {}\nCost: {}'.format(idx, *item))
...
#0: Slingshot
Quantity: 5
Cost: 20
#1: Leather Sandals
Quantity: 5
Cost: 40
#2: Wooden Sword
Quantity: 15
Cost: 100
这会在weaponstore
上循环,并在每个项目上添加适当的索引。对于每个项目,它将打印一个格式化的字符串,将传递的参数插入到大括号中。
您可能希望使用.format(idx+1, ...
而非idx
,以便列表以更自然的1
开头。然后,您可以从用户输入的任何数字中减去1
,以确定他们想要的项目。
答案 3 :(得分:0)
如果您正在寻找从武器库中的武器库获取武器的方法,那么您应该查看一个词典:
weaponstore = {
id1: ['Slingshot', 5, 20],
id2: ['Leather Sandals', 5, 40],
id3: ['Wooden Sword', 15, 100]
}
允许访问:
weaponstore[id1] # once they know what the id is
现在你可以在原始列表中使用初始位置作为他们的id,但是这很脆弱,当你从商店添加/删除项目时容易破坏。 id
可以是任何(可散列)对象,因此您可以使用武器名称作为其ID:
weaponstore = {
'Slingshot: [5, 20],
'Leather Sandals': [5, 40],
'Wooden Sword': [15, 100]
}
现在可以访问:
weaponstore['Slingshot']
你可以更进一步,使细节也成为一个字典:
weaponstore = {
'Slingshot',: {'quantity': 5, 'cost': 20},
'Leather Sandals': {'quantity': 5, 'cost': 40},
'Wooden Sword': {'quantity': 15, 'cost': 100}
}
weaponstore['Slingshot]['cost'] == 20
您可以遍历商店中的商品:
for weapon, details in weaponstore.items():
print(weapon, details)
但很难从你的描述中了解你的需求