如何在Python中用另一个列表替换列表?

7

我正在制作一个猜单词游戏,希望能够让用户替换原始单词列表为自己输入的新单词列表。目前我的代码如下:

gamewords[:] = newgamewords[:]

但是这似乎不起作用...

原始列表如下:

gamewords= ['blue','violet','red','orange','fuchsia','cyan','magenta','azure','black','turquoise','pink','scarlet']

随机选择一个单词添加到列表中。
 word=gamewords[random.randint(0,len(gamewords)-1)]

我想更改它,使单词从新列表中选择,我该如何做到这一点?

你需要分享更多的代码才能得到帮助。 - Ignacio Vazquez-Abrams
请提供您当前的代码并告诉我们为什么它无法正常工作。该代码应该将gamewords中的所有元素替换为newgamewords中的元素。 - Gareth Latty
你的问题已在下面得到回答。gamewords = newgamewords 应该能正常工作。 - Gareth Latty
4个回答

3
您可能是想要这样做:
gamewords = newgamewords[:]  # i.e. copy newgamewords

另一个选择是:
gamewords = list(newgamewords)

我认为后者更易读。
请注意,当你像这两种方法一样“复制”一个列表时,对新复制的列表进行的更改不会影响原始列表。如果你只是将newgamewords分配给gamewords(即gamewords = newgamewords),那么对gamewords的更改将会影响到newgamewords
相关文档:
- list

请注意,根据使用情况,可能根本不需要复制。 - Gareth Latty

1
明显的选择从一个较大列表中随机选择一个或多个项目的函数是 random.choice()random.choices()
>>> gamewords= ['blue','violet','red','orange','fuchsia','cyan','magenta','azure','black','turquoise','pink','scarlet']
>>> random.choice(gamewords)
'turquoise'
>>> random.choice(gamewords)
'orange'
>>> random.choice(gamewords)
'cyan'
>>> random.choices(gamewords, k=3)
['fuchsia', 'orange', 'red']
>>> random.choices(gamewords, k=2)
['turquoise', 'black']
>>> 

1

我不确定你想要什么。有两个选项:

  1. gamewords = newgamewords[:]
  2. gamewords = newgamewords

区别在于第一个选项复制newgamewords的元素并将其分配给gamewords。第二个选项只是将newgamewords引用分配给gamewords。使用第二个版本,如果更改gamewords,您将更改原始的newgamewords-列表。

因为你没有提供更多的源代码,所以我无法决定哪个选项对你有效,你必须自己找出来。


0

不确定您是否已经找到了答案,但我曾经遇到过类似的问题,并使用以下方法解决:

for x, y in zip(original_col, np.arange(0, len(original_col), 1)):
    df['Term Ldesc'] = df['Term Ldesc'].replace(x, y)

希望这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接