Python:这是不使用快捷方式而反转顺序的最有效方法吗?
这是大学一年级的课程。因此,不允许使用python快捷方式不确定什么算是反向的快捷方式,火星人的笑脸[:-1]是明显的候选者,但两者都算是快捷方式吗?!,但至少有几个小的改进是容易的:Python:这是不使用快捷方式而反转顺序的最有效方法吗?,python,Python,这是大学一年级的课程。因此,不允许使用python快捷方式不确定什么算是反向的快捷方式,火星人的笑脸[:-1]是明显的候选者,但两者都算是快捷方式吗?!,但至少有几个小的改进是容易的: 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 #Confusio
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)
这只得到lenx一次-这是一个快速的操作,但没有理由反复重复它-还计算镜像,但有一次,交换更直接,直接使用截断除法运算符将L减半,而不是使用非截断除法,然后在每种情况下使用int.纳秒进行截断,但是可以认为它稍微清晰,并且在显微镜下更快
L = len(x)
for i in range(L//2):
mirror = L - i - 1
x[i], x[mirror] = x[mirror], x[i]
slice是一个python内置对象,类似于示例中使用的range和len
__getitem_uu是属于iterable类型的方法,其中x是
这里绝对没有捷径:实际上只有一行。你的问题是什么?您的代码可以工作,如果您要求我们对此进行评论,那么这对于堆栈溢出来说是一个太宽泛的主题。您可以在代码复查堆栈交换上发布工作代码以请求改进。定义快捷方式。内置函数是否为快捷方式?您是否尝试过:reversed=x[::-1]?对不起,第一次发布。快捷方式是调用外部函数的任何方法,如revered、[::-1]等。。。列表的所有排序或编辑都必须通过手动方法完成,如pop、append、remove等。[::-1]方式的索引不是调用任何外部内容,因为您是在iterable上进行的,它只是调用iterable对象的u_getitem_uu_u方法。所以它使用自己的方法。。。与pop和append完全相同的方法类型。。。。您甚至可以通过执行类似于x的操作来手动调用此函数。_getitem__;…从范围中删除lenx是否有帮助?当然,这两种方法都只能计算一次?@jornsharpe是的,但是每次通过循环,在OP版本的代码中,lenx会被调用两次,所以我的变体会调用它一次,而不是2*N+1次。没有理由叫它两次,一次也行-这里一纳秒,那里一纳秒…:-。啊,当然。对于lenx==10,timeit给出了2.42s和3.77s,所以快了三分之一。这很完美,我的代码是正确的,但我想更有效地理解自我提升能力的代码,还有一些建议,让我的帖子对社区更积极,以免让人觉得我是这样的一个人amateur@TehTris,我的妻子和合著者,也是PSF研究员,也是迄今为止唯一一位为Python社区做出贡献的弗兰克·威利森纪念奖的女性获奖者。。。
x = [1,2,3,4,5,6,7,8,9,10]
x = x.__getitem__(slice(None,None,-1))