#python #python-3.x #list #random #sample
Вопрос:
Я пытаюсь написать карточную игру, в которой картам присваиваются числовые значения.
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
?
Ответ №1:
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]
Ответ №2:
Вы можете использовать .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)
Ответ №3:
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)