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 是(
这里绝对没有捷径:)它实际上是一条线。