Python 如何运行';更快;?或者这是正确的术语?

Python 如何运行';更快;?或者这是正确的术语?,python,Python,我是python新手,提交这段代码是为了解决Hackerrank问题,但对于大量测试用例,程序“由于超时而终止”。我怎样才能提高效率 我已经在下面粘贴了主交换函数。 (重复M次) temp=input() 温度=温度拆分(“”) i=int(温度[1])-1 j=int(温度[2])-1 代表=(i-1)+1 如果(温度[0]=“1”): 代表=(i-1)+1 而(i=i): 计数=j+1 ex1=计数 ex2=j 对于范围内的k(0,代表): arr[ex1],arr[ex2]=arr[ex2

我是python新手,提交这段代码是为了解决Hackerrank问题,但对于大量测试用例,程序“由于超时而终止”。我怎样才能提高效率

我已经在下面粘贴了主交换函数。 (重复M次)

temp=input()
温度=温度拆分(“”)
i=int(温度[1])-1
j=int(温度[2])-1
代表=(i-1)+1
如果(温度[0]=“1”):
代表=(i-1)+1
而(i=i):
计数=j+1
ex1=计数
ex2=j
对于范围内的k(0,代表):
arr[ex1],arr[ex2]=arr[ex2],arr[ex1]
ex1=ex1+1
ex2=ex2+1
j=j-1

您可以尝试简单地连接切片,而不是使用许多循环:

def query(lst, t, start, end):
    # Convert to proper zero-indexed index
    start -= 1

    if t == '1':
        return lst[start:end] + lst[:start] + lst[end:]
    elif t == '2':
        return lst[:start] + lst[end:] + lst[start:end]


# Get the input however you want
N, M = map(int, input().split())
arr = list(map(int, input().split()))
assert len(arr) == N

for _ in range(M):
    t, start, end = input().split()
    arr = query(arr, t, int(start), int(end))

print(abs(arr[0] - arr[N - 1]))
print(*arr)
输入:

8 4
1 2 3 4 5 6 7 8
1 2 4
2 3 5
1 4 7
2 1 4
输出:

1
2 3 6 5 7 8 4 1

我肯定需要一些时间来理解你所做的,我会尝试写一些类似的东西。谢谢:)@dcd唯一重要的部分应该是
query
函数。其他一切只是接收输入并给出输出。我刚刚测试了这个解决方案,不幸的是,它在后面的一些测试用例中超时了。我会尝试做一些改进,然后再回复你。那么我们只是在查询功能上浪费时间?是的,它在几个测试用例上超时了,但仍然比我的代码快得多。我还有很多东西要学。好的,谢谢:)@dcd没问题!我很高兴我能够提供帮助,尽管解决方案没有完全满足时间限制。与此同时,我会继续考虑这个问题。切换到黑暗面(又称C++)可能是一种选择…:)
1
2 3 6 5 7 8 4 1