Я создаю набор кортежей NUM_RECORDS в Python. Это мой код.Использовать список/установить понимание просто как цикл «для»?
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 записей. Я предпочитаю первую версию кода стилистически.
Является ли первая версия кода правильным использованием набора понятий? Или я должен всегда придерживаться второго метода?
EDIT: Улучшено форматирование, как предлагается. Я в основном просто копировал и вставлял из среды IDE. Извините, ребята.
Первый выглядит лучше для меня, но я бы не сказал, что это особенно неряшливо. Может использоваться символ подчеркивания вместо переменной, называемой «nouse», это обычное соглашение. – James
Что такое выбор? Создать случайную запись? Я думаю, было бы более понятно, если вы напишете функцию GenerateRandomRecord(). Я думаю, что я сделал бы это класс, а не кортеж, если вы захотите позже изменить внутреннюю структуру или получить доступ к содержательному имени, а не к [3]. –
Лично я предпочитаю расширять нетривиальные понимания в циклы, чтобы легче отлаживать конкретные итерации. – Ben