Python嵌套循环遍历双列表打印结果重复翻倍问题求助
问题原因
你当前使用了嵌套for循环,会对parent_names的每一个元素,遍历完整的parent_birthdays列表,最终输出的条目数是两个列表长度的乘积,这就是数据翻倍重复的根源。
修复方案
使用Python内置的zip()函数,将姓名列表和生日列表按索引位置一一配对,遍历配对后的结果即可。
修正后的代码如下:
print("Geneaology for: \n\t" + user_name + "\t\t" + user_birthday) print("Parents: ") # 打印父母的姓名和出生日期 for x, y in zip(parent_names, parent_birthdays): print("\t" + x + "\t\t" + y) print("Siblings: ") # 打印兄弟姐妹的姓名和出生日期 for x, y in zip(sibling_names, sibling_birthdays): print("\t" + x + "\t\t" + y) print("Grandparents: ") # 打印祖父母/外祖父母的姓名和出生日期 for x, y in zip(grandparent_names, grandparent_birthdays): print("\t" + x + "\t\t" + y)
注意:
zip()默认会以较短的列表长度为准停止配对,如果需要保证所有元素都被输出,可以使用itertools.zip_longest()为缺失值设置占位符。
内容的提问来源于stack exchange,提问作者jeremslol
相关产品推荐
相关产品推荐

