我在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条记录的快速大致相同。我更喜欢风格的代码的第一个版本。
代码的第一个版本是否正确使用了set comprehension?或者我应该始终坚持第二种方法吗?
编辑:根据建议改进格式。我大多只是从IDE复制并粘贴。抱歉,伙计们。
答案 0 :(得分: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)}