从列表列表创建字符串,然后 return 它与 #'s 接壤字符串的边缘
Create string from list of lists then return it with #'s bordering the edges of the string
我在编写此函数时遇到问题,该函数必须将列表的列表转换为字符串,然后用边框将其包围。它还必须替换最右边包含字符串 'A" with ' 的行中的 #。 .这是输入和预期输出
Input: [['.', '.', '.', 'e'],
['A', 'A', '.', 'e'],
['.', '.', '.', 'e'],
['.', 'X', 'X', 'X'],
['.', '.', '.', '.'],
['.', 'y', 'Z', 'Z']]
Output: ######
#...e#
#AA.e.
#...e#
#.XXX#
#....#
#.yZZ#
######
如您所见,带 A 的行末尾有句点而不是“#”,因为这是函数的条件之一。它必须以某种方式识别哪个列表有 1 个或多个 A,然后用句点替换末尾的#。这是我到目前为止的代码感谢任何帮助
def border_around(lst):
new_value = ''.join(str(r) for v in lst for r in v)
maxlen = max(len(s) for s in new_value)
colwidth = maxlen + 2
return '#' + '.'*colwidth
def border_around(lst):
ncols = max(len(row) for row in lst)+2
first = '#' * ncols + '\n'
last = '\n' + '#' * ncols
return first + '\n'.join('#'+''.join(row)+('#' if 'A' not in row else '.') for row in lst) + last
考虑到A的规则,可以改成:
return first + '\n'.join('#'+''.join(row) + '#' for row in lst) + last
至:
return first + '\n'.join('#'+''.join(row) + ('#' if 'A' in row else '') for row in lst) + last
我在编写此函数时遇到问题,该函数必须将列表的列表转换为字符串,然后用边框将其包围。它还必须替换最右边包含字符串 'A" with ' 的行中的 #。 .这是输入和预期输出
Input: [['.', '.', '.', 'e'],
['A', 'A', '.', 'e'],
['.', '.', '.', 'e'],
['.', 'X', 'X', 'X'],
['.', '.', '.', '.'],
['.', 'y', 'Z', 'Z']]
Output: ######
#...e#
#AA.e.
#...e#
#.XXX#
#....#
#.yZZ#
######
如您所见,带 A 的行末尾有句点而不是“#”,因为这是函数的条件之一。它必须以某种方式识别哪个列表有 1 个或多个 A,然后用句点替换末尾的#。这是我到目前为止的代码感谢任何帮助
def border_around(lst):
new_value = ''.join(str(r) for v in lst for r in v)
maxlen = max(len(s) for s in new_value)
colwidth = maxlen + 2
return '#' + '.'*colwidth
def border_around(lst):
ncols = max(len(row) for row in lst)+2
first = '#' * ncols + '\n'
last = '\n' + '#' * ncols
return first + '\n'.join('#'+''.join(row)+('#' if 'A' not in row else '.') for row in lst) + last
考虑到A的规则,可以改成:
return first + '\n'.join('#'+''.join(row) + '#' for row in lst) + last
至:
return first + '\n'.join('#'+''.join(row) + ('#' if 'A' in row else '') for row in lst) + last