水平翻转类似矩阵的字符串
Flipping a matrix-like string horizontally
此函数的目标是水平翻转类似矩阵的字符串。
例如,字符串:'100010001' 具有 2 行和 3 列,如下所示:
1 0 0
0 1 0
0 0 1
但是翻转后应该是这样的:
0 0 1
0 1 0
1 0 0
所以该函数会return以下输出:
'001010100'
注意,我不能使用列表或数组。只有字符串。
我相信,我编写的当前代码应该可以工作,但是它 return 是一个空字符串。
def flip_horizontal(image, rows, column):
horizontal_image = ''
for i in range(rows):
#This should slice the image string, and map image(the last element in the
#column : to the first element of the column) onto horizontal_image.
#this will repeat for the given amount of rows
horizontal_image = horizontal_image + image[(i+1)*column-1:i*column]
return horizontal_image
这 return 也是一个空字符串。知道问题出在哪里吗?
使用[::-1]
反转图像的每一行。
def flip(im, w):
return ''.join(im[i:i+w][::-1] for i in range(0, len(im), w))
>>> im = '100010001'
>>> flip(im, 3)
'001010100'
范围函数可用于将您的字符串分成代表行的步骤。在遍历字符串时,您可以使用 [::-1]
反转每一行以实现水平翻转。
string = '100010001'
output = ''
prev = 0
# Iterate through string in steps of 3
for i in range(3, len(string) + 1, 3):
# Isolate and reverse row of string
row = string[prev:i]
row = row[::-1]
output = output + row
prev = i
输入:
'100
010
001'
输出:
'001
010
100'
此函数的目标是水平翻转类似矩阵的字符串。
例如,字符串:'100010001' 具有 2 行和 3 列,如下所示:
1 0 0
0 1 0
0 0 1
但是翻转后应该是这样的:
0 0 1
0 1 0
1 0 0
所以该函数会return以下输出: '001010100'
注意,我不能使用列表或数组。只有字符串。
我相信,我编写的当前代码应该可以工作,但是它 return 是一个空字符串。
def flip_horizontal(image, rows, column):
horizontal_image = ''
for i in range(rows):
#This should slice the image string, and map image(the last element in the
#column : to the first element of the column) onto horizontal_image.
#this will repeat for the given amount of rows
horizontal_image = horizontal_image + image[(i+1)*column-1:i*column]
return horizontal_image
这 return 也是一个空字符串。知道问题出在哪里吗?
使用[::-1]
反转图像的每一行。
def flip(im, w):
return ''.join(im[i:i+w][::-1] for i in range(0, len(im), w))
>>> im = '100010001'
>>> flip(im, 3)
'001010100'
范围函数可用于将您的字符串分成代表行的步骤。在遍历字符串时,您可以使用 [::-1]
反转每一行以实现水平翻转。
string = '100010001'
output = ''
prev = 0
# Iterate through string in steps of 3
for i in range(3, len(string) + 1, 3):
# Isolate and reverse row of string
row = string[prev:i]
row = row[::-1]
output = output + row
prev = i
输入:
'100
010
001'
输出:
'001
010
100'