提问人:Aditya Wagh 提问时间:7/12/2020 最后编辑:Aditya Wagh 更新时间:7/12/2020 访问量:47
函数不对 python 中的列表切片起作用
Function doesn't act on the slice of a list in python
问:
我正在尝试按元素旋转长度数组。我反转了数组,然后反转了数组的两个部分并得出结果。arr
n
d
0 to n-d
n-d to n
from sys import stdin
def reverseArray(arr):
for i in range(len(arr)//2):
arr[i], arr[len(arr)-i-1] = arr[len(arr)-i-1], arr[i]
return
def rotate(arr, n, d):
reverseArray(arr)
reverseArray(arr[0:n-d])
reverseArray(arr[n-d:n])
return
# Taking Input Using fast I/O
def takeInput() :
n = int(stdin.readline().rstrip())
if n == 0:
return list(), 0
arr = list(map(int, stdin.readline().rstrip().split(" ")))
return arr, n
#to print the array/list
def printList(arr, n) :
for i in range(n) :
print(arr[i], end = " ")
print()
#main
t = int(stdin.readline().rstrip())
while t > 0 :
arr, n = takeInput()
d = int(stdin.readline().rstrip())
rotate(arr, n, d)
printList(arr, n)
t -= 1
输入:
1 # Test cases
6 # n
1 3 6 11 12 17 # elements of arr
4 # d
输出:
我的输出
17 12 11 6 3 1
预期输出
12 17 1 3 6 11
我不明白为什么我的反向函数适用于整个数组,但不适用于数组的切片。 由于列表是可变的,我认为我的函数应该更改切片。
当我将切片分配给变量,然后再次将反向值分配给切片时,它会起作用。
def rotate(arr, n, d):
reverseArray(arr)
fp = arr[0:n-d]
sp = arr[n-d:n]
reverseArray(fp)
arr[0:n-d] = fp
reverseArray(sp)
arr[n-d:n] = sp
return
答: 暂无答案
评论