Python:这是不使用快捷方式的最有效的反转顺序的方法吗?


x = [1,2,3,4,5,6,7,8,9,10]
#Random list elements
for i in range(int(len(x)/2)):
    value = x[i]
    x[i] = x[len(x)-i-1]
    x[len(x)-i-1] = value
#Confusion on efficiency
print(x)

这是第一年的大学课程。所以不允许使用python快捷方式

不确定什么算作"捷径"(reversed和"火星笑脸"[::-1]明显的候选者 - 但两者都算作"捷径"吗?!(,但至少有几个小的改进很容易:

L = len(x)
for i in range(L//2):
     mirror = L - i - 1
     x[i], x[mirror] = x[mirror], x[i]

这只会len(x)一次 - 这是一个快速操作,但没有理由一遍又一遍地重复它 - 也计算mirror但一次,更直接地交换,并将L(对于range参数(直接使用截断除法运算符,而不是使用非截断除法然后用int截断。 每种情况的纳秒,但可以认为它稍微清晰一些,并且在显微镜下更快。

x = [1,2,3,4,5,6,7,8,9,10]
x = x.__getitem__(slice(None,None,-1))

Slice 是一个 Python 内置对象(如您在示例中使用的 Range 和 len(

__getitem__ 是一个属于可迭代类型的方法(其中 x 是(

这里绝对没有捷径:)它实际上是一条线。

最新更新