如何在Python中永久移除列表中的元素?

-5 投票
2 回答
1486 浏览
提问于 2025-04-18 05:20

我有一个用Python写的程序,用来玩名叫“名人识别”的游戏。在我的游戏里,一共有15轮。

代码:

while round<15
         import random
         celeblist=["a","b","c","d","e","f"] ##and so on
         celebchoice=random.choice(celeblist)
         celeblist.remove(celebchoice)

但是它现在不太好用,我想知道怎么才能把列表中的某个项目永久删除,这样在15轮游戏中它就不会再出现了。

2 个回答

1

目前,你在每次循环的时候都重新创建这个列表。你应该在循环之前就创建好这个列表。此外:

  • 建议使用带有 rangefor 循环(在Python 3中,range 是一个迭代器),而不是用 while 循环。
  • 在开始时导入 random 模块,而不是在循环里面导入。

修正后的代码:

import random
celeblist = ["a","b","c","d","e","f"]  # and so on

for round in range(15):
     celebchoice = random.choice(celeblist)
     print("Current elem: %s" % celebchoice)
     celeblist.remove(celebchoice)
0

为什么不提前选择好每轮要用的随机名人呢?

import random

celebs = [
    "a", "b", "c", "d", "e", "f",
    "g", "h", "i", "j", "k", "l",
    "m", "n", "o", "p", "q", "r"    # need at least 15
]

chosen = random.sample(celebs, 15)
for round,celeb in enumerate(chosen, 1):
    print("{}: {}".format(round, celeb))

这样就能得到

1: j
2: a
3: r
4: f
5: n
6: o
7: g
8: k
9: i
10: l
11: e
12: b
13: d
14: q
15: p

撰写回答