在计数器上附加一个计数器

时间:2014-09-23 13:42:24

标签: python list set

我有一个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))

ix是示例变量,在这种情况下,集合中的元素始终是唯一的,我理解,但实际变量可能会出现非独特的但不应该出现在集合中。

如何定义这样的set.append()值?

3 个答案:

答案 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)}