我必须完成的任务是生成“字母等级”列表 - 示例:[A+ A A- B+ B B- ...]
我想出了以下正确生成这样一个列表的代码
number_of_grade_letters = 5
grade_letters=list(map(chr, range(65, 65 + number_of_grade_letters)))
grade_suffix=['+','','-']
grades = []
for l in grade_letters:
for s in grade_suffix:
grades = grades + [l+s]
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有更多 Pythonic 方法可以做到这一点,特别是最大限度地减少循环以提高效率并保持可读性?
小智 6
我更喜欢itertools生成事物列表的所有组合,使用product:
import itertools
grades = 'ABCDE'
modifiers = ['+','','-']
>>> print([a+b for a,b in itertools.product(grades,modifiers)])
['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'E+', 'E', 'E-']
Run Code Online (Sandbox Code Playgroud)
我希望这个答案至少被评为 E+!