Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用变量更改列表内容_Python - Fatal编程技术网

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,但这在很大程度上取决于你对数据的进一步使用,以提出任何具体的建议。也许字典在这里更好用。如果需要,您甚至可以使用列表作为任何键的值。