Python如何合并两个列表匹配生成月份问候语句 无需if-then判断
解法
你定义的两个列表元素本身就是按月份顺序一一对应的,直接用Python内置的zip()函数配对遍历即可,完全不需要冗余的if判断逻辑。
如果要完全匹配你给出的带序数词的目标输出,提前定义一个对应顺序的序数词列表,和另外两个列表同步遍历即可,代码如下:
Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] Greetings = ['Happy New Year!', 'Happy Valentines Day!', 'Happy St. Patrick Day!', 'Happy Easter!', 'Happy Memorial Day!', 'Happy Juneteenth!', 'Happy July Fourth!', 'Happy Senior Citizens Day!', 'Happy Labor Day!', 'Happy Halloween!', 'Happy Thanksgiving!', 'Merry Christmas!'] # 12个月份对应的序数词,顺序和上面两个列表完全对应 ordinals = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth'] for ordinal, month, greeting in zip(ordinals, Months, Greetings): print(f"The {ordinal} month is {month}. {greeting}")
如果不需要序数词,只要输出序号+月份+问候的格式,代码可以简化为:
for idx, (month, greeting) in enumerate(zip(Months, Greetings), 1): print(idx, month) print(greeting)
原理说明
zip()是Python的内置函数,会按位置将多个等长可迭代对象的元素打包成元组,遍历的时候可以直接取出每个位置对应的多个元素,只要你保证几个列表的顺序是一一对应的,就不需要额外的判断逻辑。
内容的提问来源于stack exchange,提问作者Mr.Chowiez
相关产品推荐
相关产品推荐

