如何使用for循环获取嵌套列表(矩阵)的所有元素
原有代码问题
你当前写的逻辑无法遍历全部元素:M[i][i] 是取行索引、列索引完全相等的对角线元素,你的示例矩阵是2行4列结构,循环中i只会取0、1两个值,最终仅能输出M[0][0]、M[1][1]两个值;如果碰到列数少于行数的矩阵,这种写法还会直接触发索引越界报错。
正确遍历实现
根据不同的使用需求,选对应写法即可:
仅需要获取元素值,不需要位置信息
最易读的写法是双层循环,外层逐行遍历,内层遍历当前行的每一个元素:M = [[0,1,0,1],[0,0,1,0]] for row in M: for element in row: print(element)执行后会按行优先的顺序,依次输出全部8个元素:0、1、0、1、0、0、1、0。
遍历过程中需要同时拿到元素对应的行号、列号
用内置函数enumerate()可以同时获取索引和对应值,不用手动写range(len())计数:M = [[0,1,0,1],[0,0,1,0]] for row_index, row in enumerate(M): for col_index, element in enumerate(row): print(f"位置({row_index},{col_index})的元素值为:{element}")需要把嵌套列表的所有元素扁平化存为一维列表
用列表推导式可以一行完成:M = [[0,1,0,1],[0,0,1,0]] all_elements = [element for row in M for element in row] # 最终all_elements值为 [0, 1, 0, 1, 0, 0, 1, 0]
内容的提问来源于stack exchange,提问作者MrTiredVeryTired
相关产品推荐
相关产品推荐

