C#中如何访问列表的列表里当前列表的上一个元素?
解决嵌套列表中访问相邻子列表的问题
嘿,我明白你遇到的困惑了!你之所以没法直接在子列表上用-1或+1来访问相邻子列表,核心原因是你遍历的是子列表本身(比如[1,2]这样的对象),而不是它们在父列表里的位置索引。直接对列表对象用索引操作自然会报错,因为那是针对列表内部元素的用法,不是针对它在父列表里的位置~
下面给你两种实用的解决方法:
方法1:通过索引遍历(最直观)
用enumerate()函数同时获取子列表的索引和对应的子列表,这样就能通过索引的加减来访问相邻的子列表了。记得要处理边界情况,避免索引越界:
# 示例嵌套列表 list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] for idx, current_sub in enumerate(list_of_lists): # 访问上一个子列表:只有当前索引大于0时才存在 if idx > 0: prev_sub = list_of_lists[idx - 1] print(f"当前子列表{current_sub}的上一个子列表是:{prev_sub}") # 访问下一个子列表:只有当前索引小于父列表长度-1时才存在 if idx < len(list_of_lists) - 1: next_sub = list_of_lists[idx + 1] print(f"当前子列表{current_sub}的下一个子列表是:{next_sub}")
方法2:跟踪相邻元素(适合不需要索引的场景)
如果你不想用索引,也可以用变量来保存上一个子列表;如果要找下一个,还可以借助itertools.pairwise(Python 3.10+支持)来直接遍历相邻对子:
跟踪上一个子列表
list_of_lists = [[1, 2], [3, 4], [5, 6]] prev_sub = None for current_sub in list_of_lists: if prev_sub is not None: print(f"当前子列表{current_sub}的上一个是:{prev_sub}") # 更新prev_sub,供下一次循环使用 prev_sub = current_sub
遍历下一个子列表(用itertools)
from itertools import pairwise list_of_lists = [[1, 2], [3, 4], [5, 6]] for current_sub, next_sub in pairwise(list_of_lists): print(f"当前子列表{current_sub}的下一个是:{next_sub}")
简单来说,只要你拿到子列表在父列表中的位置信息(索引),或者提前跟踪好相邻元素,就能轻松访问上一个/下一个子列表啦!
内容的提问来源于stack exchange,提问作者PIETER BRACKE
相关产品推荐
相关产品推荐

