Python 使用变量更改列表内容
示例代码Python 使用变量更改列表内容,python,Python,示例代码 items = ["x", "y" "z"] myItems = [] print(items) get_items = input("Choose an Item: ") myItems.append(get_items) items.remove(get_items) print("Change Items Name?") answer = input("Yes No
items = ["x", "y" "z"]
myItems = []
print(items)
get_items = input("Choose an Item: ")
myItems.append(get_items)
items.remove(get_items)
print("Change Items Name?")
answer = input("Yes No:")
if answer == "Yes":
print("Which Item?")
#assuming that you can get more than one
print(myItems)
answer2 = input()
if answer2 in myItems:
newName = input("New Name: ")
myItems[answer2] = newName
这里的错误是最后一行。
如果用户想要更改x的名称
答案2应该是x或(answer2=“x”)
但是myItems[]只能接受x的索引,而不能接受“x”本身。因此,我无法更改x的名称,因为myItems[]无法检测到它
我当然可以把它改成
myItems[0] = newName #assuming x's index is 0
但假设我有多个项目。
我必须用不同的索引制作更多的行
我希望你能理解我在这里想要实现的目标,因为我自己无法正确解释。替换最后一行
myItems[answer2] = newName
据此:
myItems[myItems.index(answer2)]=newName
这可以通过两种方式实现 一个简单的方法是使用与您所拥有的格式类似的格式 返回值等于x的第一个项列表中从零开始的索引。如果没有此类项,则引发ValueError 重点矿山 使用此功能的实现可以是:
myItems[myItems.index(answer2)] = newName
但是,如果有多个要替换的answer2
实例,这将不起作用。这可以通过避免多个O(n)计算而采用单个计算来解决:
myItems = [item if item != answer2 else newName for item in myItems]
你使用了错误的数据结构。我同意@TigerhawkT3,但这在很大程度上取决于你对数据的进一步使用,以提出任何具体的建议。也许字典在这里更好用。如果需要,您甚至可以使用列表作为任何键的值。