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

Python组合遍历报错:TypeError: 列表索引需为整数/切片而非元组

解决遍历组合列表时的TypeError问题

错误原因

你在遍历lcomb时犯了一个常见的遍历逻辑错误:

for i in lcomb:
    a = lcomb[i][0]
    b = lcomb[i][1]

这里的i并不是列表的索引下标,而是lcomb中的每一个元组元素(比如第一次循环时i的值是(-999, -998))。列表的索引只能是整数或切片,用元组当索引自然会触发TypeError: list indices must be integers or slices, not tuple。

正确的遍历方式

有三种简洁的写法可以解决这个问题:

1. 直接解包元组(推荐)

利用Python的元组解包特性,直接在循环中把元组的元素赋值给变量:

for a, b in lcomb:
    # 直接使用a和b即可,比如打印
    print(a, b)

2. 遍历元组变量并取元素

如果需要保留元组的引用,可以先把元组赋值给变量,再通过下标取元素:

for tup in lcomb:
    a = tup[0]
    b = tup[1]
    # 执行后续操作

3. 同时获取索引和元组(如果需要索引)

如果需要知道当前元素在列表中的位置,可以用enumerate:

for idx, tup in enumerate(lcomb):
    a = tup[0]
    b = tup[1]
    print(f"第{idx}组:{a}, {b}")

额外提示

你的comb函数其实可以简化,因为itertools.combinations本身就返回迭代器,没必要额外封装:

from itertools import combinations

lper = [i for i in range(-999, 1000)]
lcomb = list(combinations(lper, 2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:26