我有一些代码可以创建一个从1到561的数字列表。我想创建一个变量,该变量名为“ ultimate”,其中包含45个值,但是我将其放在该列表中,希望将其从cards_id列表中删除。我怎样才能做到这一点?这是我的通用代码。
def cards_id(x):
list = []
for i in range(1,x+1):
list.append(i)
return list
cards_id(561)
import random
print (random.choice(cards_id(561)))
from random import shuffle
for i in range(0,45):
print (random.choice(cards_id(561)))
答案 0 :(得分:2)
无需迭代,将卡片添加到新列表中,并从原始列表中删除卡片(效率很低)。
您可以将原始列表改组并获取前45个元素,而将原始列表更改为保留其余元素。
cards = list(range(1,562))
random.shuffle(cards)
selected, cards = cards[:45], cards[45:]
答案 1 :(得分:0)
您可以使用numpy
:
import numpy as np
cards_id = np.arange(561) + 1
ultimate = np.random.choice(cards_id, 45)
cards_id = np.setdiff1d(cards_id, ultimate)
答案 2 :(得分:-1)
您可以这样做:
def cards_id(x):
lis = []
for i in range(1,x+1):
lis.append(i)
return lis
import random
cards_id_list=cards_id(561)
ultimate=[]
for i in range(0,45):
a=random.choice(cards_id_list)#random element from the list
ultimate.append(a)
cards_id_list.remove(a)#remove from the list here