我正在为我的数学老师制作一套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:最小/最大部分并不重要,只是指定将多少随机数添加到列表中。
答案 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))
这里有一个警告。由于重复的随机整数被丢弃,因此集合的长度将不是确定性的。因此,如果您希望两者中的元素数量相等,则可能需要稍微修改循环逻辑。