0

我正在 Python 中创建一组 NUM_RECORDS 元组。这是我的代码。

record_key_list = {(choice(tuple(studentID_list)),
                   choice(tuple(courseID_list)),
                   randint(2012, 2016),
                   choice(semesters),
                   choice(grades)[0]) 
                   for no_use in range(NUM_RECORDS)}

另一种方法是像这样对问题进行编码。

record_key_list = set()
while len(record_key_list) < NUM_RECORDS:
    record_key_list.add((choice(tuple(studentID_list)),
                        choice(tuple(courseID_list)),
                        randint(2012, 2016),
                        choice(semesters),
                        choice(grades)[0]))

我对这两个代码片段进行了计时,它们对于 20000 条记录的速度大致相同。在风格上,我更喜欢代码的第一个版本。

代码的第一个版本是集合理解的正确用法吗?还是我应该始终坚持第二种方法?

编辑:按照建议改进格式。我大多只是从 IDE 复制和粘贴。对不起,伙计们。

4

1 回答 1

1

第一个代码片段看起来非常好。如果有的话,为了清晰和更容易重构,我会将记录创建提取到一个函数中。

def random_record():
    studentID = choice(studentID_list)
    courseID = choice(courseID_list)
    year = randint(2012, 2016)
    semester = choice(semesters)
    grade = choice(grades)[0]
    return (studentID, courseID, year, semester, grade)

# ...

record_key_list = {random_record() for _ in range(NUM_RECORDS)}
于 2016-08-08T21:51:05.230 回答