python-从一个数组中随机选择一个成员并在另一个相同数组中移除它

0 投票
3 回答
836 浏览
提问于 2025-04-17 02:03

我有两个数组,一个是主数组,另一个是临时数组。临时数组会随机选择一个数字,然后这个数字应该从主数组中删除,因为这两个数组的内容是一样的。请问该怎么做呢?下面是代码。

import random
spil=['1t','2t','3t','4t','5t','6t','7t','8t','9t','10t','12t','13t','14t'\
           ,'1k','2k','3k','4k','5k','6k','7k','8k','9k','10k','12k','13k','14k'\
           ,'1e','2e','3e','4e','5e','6e','7e','8e','9e','10e','12e','13e','14e'\
           '1p','2p','3p','4p','5p','6p','7p','8p','9p','10p','12p','13p','14p']
print(spil)
izvucena = random.sample(['1t','2t','3t','4t','5t','6t','7t','8t','9t','10t','12t','13t','14t'\
           ,'1k','2k','3k','4k','5k','6k','7k','8k','9k','10k','12k','13k','14k'\
           ,'1e','2e','3e','4e','5e','6e','7e','8e','9e','10e','12e','13e','14e'\
           '1p','2p','3p','4p','5p','6p','7p','8p','9p','10p','12p','13p','14p'],1)
spil.remove(izvucena)
print(spil)

3 个回答

1

除非你需要这个临时列表来做其他事情,否则其实没必要去移除一个随机值。你可以直接这样做:

spil.remove(random.choice(spil))
2

问题在于,random.sample() 返回的是一个列表,而不是单个元素。在这个情况下,izvucena 是一个只包含一个元素的列表。只需要把倒数第二行替换成 spil.remove(izvucena[0]),这样就可以直接移除那个元素了。

4

你的问题是,random.sample 返回的是一个列表,而你其实想要做的事情是这样的:

izvucena = random.sample(spil, 1)[0] # grab only element from list returned

不过,使用 random.choice 会更简单一些:

izvucena = random.choice(spil)

撰写回答