我有一个列表,我可以从中获得五个随机数。我的问题是我想创建一个没有选择的新列表。当然,我可以使用for循环来实现它,但也许有一个更有效的解决方案,没有for循环,或者可能有例如理解。
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
some_list = random.sample(list, 5)
print(some_list)
for card in some_list:
list.remove(card)
print(list)
输出:
[15, 2, 13, 7, 8]
[1, 3, 4, 5, 6, 9, 10, 11, 12, 14]
答案 0 :(得分:2)
biglist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
randoms = random.sample(biglist, 5)
newlist = [x for x in biglist if x not in randoms]
答案 1 :(得分:2)
如果您的列表中没有重复元素,则可以使用set
并设置差异,以获得结果。如果你不关心结果的顺序。例如 -
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
some_list = random.sample(list1, 5)
result = list(set(list1) - set(some_list))
另外请确保您没有为变量list
命名(为此起作用),因为这会影响内置类型list
并且您将无法使用list(..)
创建列表。
演示 -
>>> import random
>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> some_list = random.sample(list1, 5)
>>> result = list(set(list1) - set(some_list))
>>> result
[3, 5, 6, 7, 8, 9, 10, 11, 12, 13]
>>> some_list
[4, 1, 15, 14, 2]