如何向多维列表追加值?解决Python列表索引越界报错
问题描述
我编写了以下Python代码,试图生成指定结构的多维列表:
list=[["Uno","Dos"],[1,2],["Tres","Cuatro"],[3,4]] print(list) list[4][0].insert(A) New_list=[[],[],[],[]] A=list[0][0]+str(list[1][0]) B=(list[0][0]+str(list[1][0]))[::-1] C=list[0][1]+str(list[1][1]) D=(list[0][1]+str(list[1][1]))[::-1] E=list[2][0]+str(list[3][0]) F=(list[2][0]+str(list[3][0]))[::-1] G=list[2][1]+str(list[3][1]) H=(list[2][1]+str(list[3][1]))[::-1] New_list[0][0].append(A) print(New_list)
我的预期输出是:
[["Uno1","1onU"],["Dos2","2soD"],["Tres3","3serT"],["Cuatro4","4ortauC"]]
但我尝试使用append和insert方法时,总是收到报错信息,通常是“list index is out of range”(列表索引越界)。请问我该如何将计算得到的值正确添加到New_list中?
错误分析与解决方法
1. 代码里的核心错误
list[4][0].insert(A): 你的list只有4个元素(索引范围0-3),list[4]直接触发索引越界,而且这行代码在变量A定义前调用,完全无意义,直接删除即可。New_list[0][0].append(A):New_list[0]是空列表,不存在New_list[0][0]这个索引,自然会报错。应该直接往New_list[0]这个子列表里追加元素,或者直接赋值构建子列表。
2. 正确实现方式
方法一:直接赋值构建(最直观)
# 避免用list做变量名,覆盖内置类型 original_list = [["Uno","Dos"],[1,2],["Tres","Cuatro"],[3,4]] A = original_list[0][0] + str(original_list[1][0]) B = A[::-1] C = original_list[0][1] + str(original_list[1][1]) D = C[::-1] E = original_list[2][0] + str(original_list[3][0]) F = E[::-1] G = original_list[2][1] + str(original_list[3][1]) H = G[::-1] # 直接把计算好的对子作为子列表赋值 New_list = [ [A, B], [C, D], [E, F], [G, H] ] print(New_list)
方法二:用append逐步构建
如果想通过append方法来添加元素:
original_list = [["Uno","Dos"],[1,2],["Tres","Cuatro"],[3,4]] New_list = [] # 第一组 A = original_list[0][0] + str(original_list[1][0]) B = A[::-1] New_list.append([A, B]) # 第二组 C = original_list[0][1] + str(original_list[1][1]) D = C[::-1] New_list.append([C, D]) # 第三组 E = original_list[2][0] + str(original_list[3][0]) F = E[::-1] New_list.append([E, F]) # 第四组 G = original_list[2][1] + str(original_list[3][1]) H = G[::-1] New_list.append([G, H]) print(New_list)
方法三:循环简化写法(适合数据量较大的情况)
original_list = [["Uno","Dos"],[1,2],["Tres","Cuatro"],[3,4]] New_list = [] # 按每两组(文字组+数字组)处理 for i in range(0, len(original_list), 2): word_group = original_list[i] num_group = original_list[i+1] # 逐个配对文字和数字 for word, num in zip(word_group, num_group): combined = word + str(num) New_list.append([combined, combined[::-1]]) print(New_list)
内容的提问来源于stack exchange,提问作者manpreet
相关产品推荐
相关产品推荐

