我有两个列表,基本上相同的数字:
import random
A = [ 0, 10, 20, 30, 40 ]
B = [ 0, 10, 20, 30, 40 ]
drawA =(random.choice(A))
drawB =(random.choice(B)) # want to exclude the number drawn in drawA如果是drawB == drawA,我怎么能让python重新绘制呢?
否则,我如何从列表B中提取一个数字,而不包括已在列表A中绘制的数字?
发布于 2017-09-28 17:49:02
找到随机数时,只需从B中排除drawA的值即可。
drawB = random.choice(filter(lambda num: num != drawA, B))或
继续循环,直到你得到想要的结果。
import random
A = [ 0, 10, 20, 30, 40 ]
B = [ 0, 10, 20, 30, 40 ]
drawA = random.choice(A)
number = random.choice(B)
while number == drawA:
number = random.choice(B)
drawB = number发布于 2017-09-28 17:52:28
在没有drawA元素的已修改数组中搜索。
import random
A = [ 0, 10, 20, 30, 40 ]
B = [ 0, 10, 20, 30, 40 ]
drawA =(random.choice(A))
drawB =(random.choice([x for x in B if x != drawA]))发布于 2017-09-28 18:00:52
首先,我们可以为B创建一个随机数生成器:
def gen_B():
while True:
yield random.choice(B)然后选择第一个不是用于A的值:
drawB = next(x for x in gen_B() if x != drawA)或者,您可以使用:
import itertools
next(x for x in (random.choice(B) for _ in itertools.count()) if x != drawA)https://stackoverflow.com/questions/46466014
复制相似问题