首页 > 解决方案 > 嵌套列表循环索引

问题描述

我正在尝试根据单词列表创建字符列表,即

["BOARD", "GAME"] -> [["B","O"...], ["G","A","M"...]

据我了解,我有一个 IndexError,因为我的初始板列表不包含预定数量的列表。

有没有办法根据板子中的对象数量在板子列表中创建一个新列表?

我不知道我是否清楚。

谢谢你。

board=["BOARD", "GAME"]
boardlist=[[]]
i=0
for word in board:
    for char in word:
        boardlist[i].append(char)
    i=i+1
print(boardlist)

IndexError:列表索引超出范围

标签: python

解决方案


请注意,这可以通过获取list中的每个字符串的a 来以更简单的方式完成board,因为列表构造函数会将输入可迭代(在本例中为字符串)转换为其中的子字符串列表:

l = ["BOARD", "GAME"] 

[list(i) for i in l]
# [['B', 'O', 'A', 'R', 'D'], ['G', 'A', 'M', 'E']]

让我们也找到解决您当前方法的方法。首先boardlist=[[]]不是初始化列表的有效方法(检查它返回的内容)。您可能想查看这篇文章。此外,您不必enumerate为此增加一个计数器:

boardlist = [[] for _ in range(len(board))]
for i, word in enumerate(board):
    for char in word:
        boardlist[i].extend(char)

print(boardlist)
# [['B', 'O', 'A', 'R', 'D'], ['G', 'A', 'M', 'E']]

推荐阅读