如何从python列表中随机删除重复的值

问题描述 投票:0回答:1

我的输入点列表为:

input_points = [{'name': 'a', 'value': (0.0, 1.0)}, {'name': 'b', 'value': (2.0, 1.0)},
                {'name': 'c', 'value': (3.0, 1.0)}, {'name': 'd', 'value': (0.0, 3.0)},
                {'name': 'e', 'value': (1.0, 2.0)}, {'name': 'f', 'value': (1.5, 1.5)},
                {'name': 'g', 'value': (1.0, 1.0)}, {'name': 'h', 'value': (1.5, 2.0)}]

我必须迭代生成两个随机点。我正在使用random.sample()作为:

for x in range(100):
    point1 = random.sample(input_points, 2)
    print(point1)

但是它为我提供了重复点的组合,这就是为什么我一直没有在100次迭代中从列表中得到所有点的组合的原因。但是我只需要遍历100次迭代中的所有点。有什么办法可以消除重复项,即我可以在100次迭代中得到所有点的组合。

谢谢

python list random
1个回答
0
投票

您可以在while循环内使用for循环,以确保之前没有记录每次迭代的随机选择:

import random
result = []
for _ in range(100):
   _r = random.sample(input_points, 2)
   while any(i in result for i in _r):
      _r = random.sample(input_points, 2)
   result.extend(_r)
© www.soinside.com 2019 - 2024. All rights reserved.