在Python

时间:2016-04-12 17:43:46

标签: python list random

我正在为我的数学老师制作一套Set运动发生器,但我偶然发现了一个问题。我使用randint生成“集合”(列表)中的所有数字,很多时候我最终重复相同的整数2到4次,这在传统的代数集中是不可能的。有没有办法让我在不影响整个清单的情况下处理重复的项目?

以下是我正在使用的代码:

while max != min:
    if max < min:
        raise ArithmeticError
    set1.append(randint(0, 100))
    set2.append(randint(0, 100))
    max -= 1

PS:最小/最大部分并不重要,只是指定将多少随机数添加到列表中。

2 个答案:

答案 0 :(得分:1)

Python有一个built-in set type。只需使用set()包装set1列表即可。

我在这里创建了一个示例:https://repl.it/CEnz

更新:

x = [2,3,4,2,3,6,7,89]
y = set(x)
z = list(y)
print x, type(x)
print y, type(y)
print z, type(z)

将打印

[2, 3, 4, 2, 3, 6, 7, 89] <type 'list'>
set([2, 3, 4, 6, 7, 89]) <type 'set'>
[2, 3, 4, 6, 7, 89] <type 'list'>

分别为x,y和z。

答案 1 :(得分:1)

如何使用set代替列表

s1 = set()
s2 = set()
# loop logic
s1.add(random.randint(0, 100))
s2.add(random.randint(0, 100))

这里有一个警告。由于重复的随机整数被丢弃,因此集合的长度将不是确定性的。因此,如果您希望两者中的元素数量相等,则可能需要稍微修改循环逻辑。