我正在尝试写一个纸牌游戏,其中的卡片被分配数字值。
a = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]
b = [1, 2]
如何将b
(从一张牌中提取的卡片)从a
中移除以获得:
c = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3]
或者..。如何从a
中随机抽取一个样本,以生成一个单独的列表b
发布于 2021-07-27 18:14:40
random.sample(a, n)
会给出一个样本,其中n
是您想要的样本大小:
>>> a = [1,1,1,1,2,2,2,2,3,3,3,3]
>>> random.sample(a, 5)
[2, 1, 3, 2, 2]
或者,您可以从一开始就使用random.shuffle(a)
并绘制n
卡:
>>> random.shuffle(a)
>>> a
[2, 1, 2, 2, 1, 1, 1, 3, 2, 3, 3, 3]
>>> a[:5]
[2, 1, 2, 2, 1]
发布于 2021-07-27 18:14:28
您可以使用.remove()
。
remove()
-删除第一次出现的值。如果不存在值,则引发ValueError
。
a = [1,1,1,1,2,2,2,2,3,3,3,3]
b = [1,2]
a.remove(b[0])
a.remove(b[1])
print(a)
或者:
a = [1,1,1,1,2,2,2,2,3,3,3,3]
b = [1,2]
for i in b:
a.remove(i)
print(a)
如果需要单独的列表,可以创建列表a
的副本。
a = [1,1,1,1,2,2,2,2,3,3,3,3]
b = [1,2]
c=a.copy()
for i in b:
c.remove(i)
print(c)
发布于 2021-07-27 18:46:46
import random
Deck_lst = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]
Deck_lst_sequence = [i for i, v in enumerate(Deck_lst)]
Draw_cards_index = random.sample(Deck_lst_sequence, 2)
Draw_cards_value = []
for Draw_card in Draw_cards_index:
Draw_cards_value.append(Deck_lst[Draw_card])
Deck_lst.remove(Deck_lst[Draw_card])
print(Deck_lst)
print(Draw_cards_value)
https://stackoverflow.com/questions/68553554
复制