Python中使用zip()与for循环从列表生成目标嵌套元组问题求助
问题原因分析
- 错误1:调用
zip时额外给三个输入列表套了一层[],相当于传入的三个参数都是仅包含1个元素(原完整列表)的列表,zip只会迭代1次,将三个完整列表打包为单个元组,导致输出内部出现多余的列表括号。 - 错误2:把列表转元组、return的逻辑写在了for循环内部,循环第一次执行就会直接返回结果,不会完成所有元素的迭代。
正确实现方案
前置输入(你已有的三个原始列表)
name = ["John", "Bruno", "Mike"] place = ["London", "San Paulo", "Sevilla"] weather = ["Cloudy", "Sunny", "Windy"]
符合要求的代码(仅用zip+for循环,无索引/enumerate)
def generate_result(name, place, weather): answer = [] # 直接传入三个原始列表给zip,不要额外套列表 for item in zip(name, place, weather): answer.append(item) # 循环全部执行完成后,再转元组返回 return tuple(answer) answer = generate_result(name, place, weather) print(answer)
输出结果
(('John', 'London', 'Cloudy'), ('Bruno', 'San Paulo', 'Sunny'), ('Mike', 'Sevilla', 'Windy'))
完全符合需求的结构要求。
内容的提问来源于stack exchange,提问作者santoros
相关产品推荐
相关产品推荐

