将列表/集合理解仅仅用作“for”循环?

2024-09-27 21:23:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python创建一组NUM\u记录元组。这是我的密码。你知道吗

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条记录,它们与fast大致相同。我更喜欢第一个版本的代码风格。你知道吗

第一个版本的代码是正确的集合理解用法吗?还是应该一直坚持第二种方法?你知道吗

编辑:按建议改进格式。我主要是从IDE复制和粘贴的。抱歉,伙计们。你知道吗


Tags: 方法key版本记录recordnumlistgrades
1条回答
网友
1楼 · 发布于 2024-09-27 21:23:19

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

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

相关问题 更多 >

    热门问题