Python pathway函数生成路径组合时元素被拼接如何修复
问题说明
编写路径生成函数,要求返回包含所有可能城市组合的嵌套列表。
- 预期输出:
[['Moscow', 'Oslo', 'Boston', 'Berlin'], ['Moscow', 'Oslo', 'Sydney', 'Berlin'], ['Moscow', 'Paris', 'Boston', 'Berlin'], ['Moscow', 'Paris', 'Sydney', 'Berlin']]
- 测试调用方式:
pathway('Moscow', [['Oslo', 'Paris'], ['Boston', 'Sydney']], 'Berlin') - 实际错误输出:
[['Moscow', 'Oslo, Boston', 'Berlin'], ['Moscow', 'Oslo, Sydney', 'Berlin'], ['Moscow', 'Paris, Boston', 'Berlin'], ['Moscow', 'Paris, Sydney', 'Berlin']]
- 原有问题代码:
def pathway(city_from, city_array, city_to): paths = [] cities = itertools.product(*city_array) cities = [', '.join(map(str, x)) for x in cities] for i in cities: i = str(i) path = city_from, i, city_to paths.append(list(path)) return paths
错误原因
原有代码使用', '.join()将itertools.product()生成的多元素中间城市元组拼接成了单个字符串,导致每组中间的两个城市被合并为一个列表元素,没有拆分为独立项。
修改后代码
移除不必要的字符串拼接逻辑,直接将起点、每组中间城市、终点解包拼接为列表即可:
import itertools def pathway(city_from, city_array, city_to): paths = [] for mid_group in itertools.product(*city_array): # 解包中间城市组,和起点、终点合并为完整路径 paths.append([city_from, *mid_group, city_to]) return paths
调用后输出和预期结果完全一致。
内容的提问来源于stack exchange,提问作者lzvtmtvv
相关产品推荐
相关产品推荐

