仅将 list/set 推导式用作 "for" 循环?
Use list/set comprehension merely as a "for" loop?
我正在 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 复制粘贴。对不起,伙计们。
第一个代码片段看起来完全没问题。如果有的话,为了清晰和更容易重构,我会将记录创建提取到一个函数中。
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)}
我正在 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 复制粘贴。对不起,伙计们。
第一个代码片段看起来完全没问题。如果有的话,为了清晰和更容易重构,我会将记录创建提取到一个函数中。
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)}