我有一个for
循环,我在i in range(0, 999999999)
计算,我想在set
中添加第二个变量,例如(伪代码):
import random
the_set = set()
for i in range(0, 999999999):
x = random.randint(0,100)
the_set.append(str(i)+":"+str(x))
i
和x
是示例变量,在这种情况下,集合中的元素始终是唯一的,我理解,但实际变量可能会出现非独特的但不应该出现在集合中。
如何定义这样的set
和.append()
值?
答案 0 :(得分:3)
Python set
没有append
方法,但它们有add
。所以,你可以做到
the_set.add(str(i)+":"+str(x))
在这种情况下,你可以简单地使用set comprehension,就像这样
the_set = {"{}:{}".format(i, random.randint(0,100)) for i in range(999999999)}
但这里的实际问题是999999999
。这是一个非常大的数字。因此,不建议构建一组该大小并将其保存在内存中。如果你只是将它用作一个唯一的数字生成器,你可以简单地使用一个生成器,就像这个
def get_next_number(max_number):
for i in xrange(max_number): # use `range` if you are using Python 3.x
yield "{}:{}".format(i, random.randint(0,100))
然后你可以在像这样的循环中使用它
for new_number in get_next_number(999999999):
print new_number
答案 1 :(得分:0)
如果我理解正确,你的目标是忽略x
如果它已经生成,我想你可能想要使用字典:
the_dict()
for i in range(0, 999999999):
x = random.randint(0,100)
if the_dict.has_key(x):
continue
the_dict[x] = i
您可以在之后构建结果集:
the_set = {'%i:%i' % (value, key) for key, value in the_dict.iteritems()}
答案 2 :(得分:0)
the_set = {'{}:{}'.format(i, random.randint(0,100)) for i in xrange(10)}