Python从不同索引位置遍历列表生成所有两词组合问题
解决方案
需求为生成4个单词中所有不重复的两两组和,共6个符合要求的结果。原有代码核心问题:
- 单词列表定义时每个元素额外加了逗号和多余空格,无需额外添加标点
- 直接对字符串类型的列表元素做加1操作,类型不匹配,操作索引需要先获取列表的下标值
- 自定义函数没有添加return语句,执行完无返回值所以打印结果为None
手动循环实现(适合理解底层逻辑)
words = ["comfortable", "round", "support", "machinery"] result = [] # 外层遍历第一个词的索引 for i in range(len(words)): # 内层遍历第二个词的索引,从i+1开始避免生成重复组合 for j in range(i+1, len(words)): result.append(f"{words[i]} {words[j]}") print(result)
输出结果完全匹配要求的格式:
["comfortable round", "comfortable support", "comfortable machinery", "round support", "round machinery", "support machinery"]
标准库简洁实现
Python内置itertools.combinations可直接实现从序列中取n个元素的不重复组合,代码更精简:
from itertools import combinations words = ["comfortable", "round", "support", "machinery"] result = [" ".join(pair) for pair in combinations(words, 2)] print(result)
运行结果和手动实现完全一致。
内容的提问来源于stack exchange,提问作者Diana Galindo
相关产品推荐
相关产品推荐

