我有一个由“ x”和“。”组成的嵌套列表,其边界由“-”表示。如果存在“ x”,则必须更改“。”。在“ x”的3x3正方形内的字符,例如“ |”。
我有有效的代码,但是我想知道是否以及如何使用列表理解来代替这个问题?我不知道如何或是否可以使用列表理解替换嵌套列表中的值。我只有在使用
这样的列表理解功能时myList = [expression, for clause, condition]
代码在遍历for循环并检查条件时将表达式添加到myList。
将此作为我的原始列表:
myList = [
['-','-','-','-','-','-','-'],
['-','x','.','.','-','-','-'],
['-','.','.','.','-','-','-'],
['-','.','x','.','-','-','-'],
['-','.','.','.','.','.','-'],
['-','-','-','-','-','-','-']
]
我必须将其更改为此(假设初始行和列分别是3和2:
myList = [
['-','-','-','-','-','-','-'],
['-','x','.','.','-','-','-'],
['-','|','|','|','-','-','-'],
['-','|','x','|','-','-','-'],
['-','|','|','|','.','.','-'],
['-','-','-','-','-','-','-']
]
我的函数将嵌套列表以及“ x”的行和列值作为输入参数。这是我所拥有的,并且可以正常工作:
for row in [y-1, y, y+1]:
for column in [x-1, x, x+1]:
if nestedList[row][column] == '.':
nestedList[row][column] = character
答案 0 :(得分:0)
可能不是最好的主意,但这是答案:
mybucket.s3.amazonaws.com/object.jpg
请注意,这会生成一个新列表,因为列表理解不适用于分配。为了清楚起见,这里进行了扩展:
x = 2
y = 3
[['|' if x-1 <= i <= x+1 and y-1 <= j <= y+1 and (myList[j][i] == '.') else myList[j][i] for i in range(len(myList[y]))] for j in range(len(myList))]