You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用enumerate函数生成指定字符串组合?

问题解决:用for循环生成字符串组合 & 理解enumerate

先搞懂enumerate到底怎么用

enumerate(可迭代对象) 就是给每个元素绑定一个索引值,默认从0开始,遍历的时候会返回(索引, 元素)的元组。比如你的列表eg = ["A","B","C","D","E"],跑这段代码:

eg = ["A","B","C","D","E"]
for idx, val in enumerate(eg):
    print(idx, val)

输出就是:

0 A
1 B
2 C
3 D
4 E

如果想让索引从1开始,加个start参数就行:enumerate(eg, start=1),这样索引就从1到5了。


需求1:生成连续相邻的组合(['AB', 'BC', 'CD', 'DE'])

不用enumerate也能轻松实现,直接用索引循环就行:

eg = ["A","B","C","D","E"]
result = []
# 循环到倒数第二个元素,因为要取i和i+1
for i in range(len(eg)-1):
    result.append(eg[i] + eg[i+1])
print(result)  # 输出: ['AB', 'BC', 'CD', 'DE']

非要用enumerate的话,也可以,只要判断不是最后一个元素:

eg = ["A","B","C","D","E"]
result = []
for idx, val in enumerate(eg):
    # 当索引不是最后一个时,取当前元素+下一个元素
    if idx != len(eg)-1:
        result.append(val + eg[idx+1])
print(result)

需求2:生成所有间隔递增的组合(['AB', 'BC', 'CD', 'DE', 'AC', 'BD', 'CE', 'AD', 'BE', 'AE'])

本质上是要生成所有i < j的两两元素组合,如果你要和例子里的顺序一致(先相邻,再间隔1,再间隔2...),可以按间隔来循环:

eg = ["A","B","C","D","E"]
result = []
# 先遍历间隔从1到最大间隔(len(eg)-1)
for gap in range(1, len(eg)):
    # 每个间隔下,遍历起始索引i,保证i+gap不越界
    for i in range(len(eg)-gap):
        result.append(eg[i] + eg[i+gap])
print(result)
# 输出: ['AB', 'BC', 'CD', 'DE', 'AC', 'BD', 'CE', 'AD', 'BE', 'AE']

如果不需要严格按间隔排序,只想拿到所有两两组合,用双重循环更直接:

eg = ["A","B","C","D","E"]
result = []
# 外层循环每个元素的索引i
for i in range(len(eg)):
    # 内层循环从i+1开始,保证j > i
    for j in range(i+1, len(eg)):
        result.append(eg[i] + eg[j])
print(result)
# 输出: ['AB', 'AC', 'AD', 'AE', 'BC', 'BD', 'BE', 'CD', 'CE', 'DE']

另外,Python标准库itertools里的combinations可以直接生成两两组合,一行搞定:

from itertools import combinations
eg = ["A","B","C","D","E"]
result = [''.join(pair) for pair in combinations(eg, 2)]
# 要按间隔排序的话,还是用上面的按gap循环的写法

内容的提问来源于stack exchange,提问作者vicefreak04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:35:17