我想在点s处分割数组并将其添加到数组的末尾。但是我的输出是我的输入列表。
def split_and_add(arr, s):
n = len(arr)
if n >= s or s <=0:
return arr
else:
end = []
for i in range(0,s):
end = end + [arr[i]]
start = []
for i in range(s,n):
start = start + [arr[i]]
return start + end
print(split_and_add([1,2,3,4,5,6],3))
输出仍然是[1,2,3,4,5,6]。有人能帮忙吗?
代码中唯一的问题是
if n >= s or s <=0:
在这里,您正在检查数组n
的长度是否大于断点s
,如果是,则返回原始数组。但是你需要做的是检查s
是否大于或等于数组的长度,如果是,返回原始数组。因此,您所需要做的就是将n >= s
替换为s >= n
。所以你的条件是
if s >= n or s <=0:
return arr
现在,这应该可以工作了。
您可以用一种简单的方法做到这一点。只需像这样将左半部分arr[:s]
添加到右半部分arr[s:]
。
def split_and_add(arr, s):
n = len(arr)
if s >= n or s <=0:
return arr
return arr[s:] + arr[:s]
对于样例输入,它给出:
split_and_add([1,2,3,4,5,6],3)
# [4, 5, 6, 1, 2, 3]