2024-09-29 03:32:33 发布
网友
有人问我一个面试问题来扭转阵势。我用了下面的方法,果然奏效了:
def reverse(array, i, j): if i > j: # ensure i <= j i, j = j, i while i < j: array[i], array[j] = array[j], array[i] i += 1 j -= 1
现在,面试官让我把上面的while循环替换成for,我真的很困惑。有人能帮我吗。提前谢谢。在
这不是for,但您也可以执行以下操作:
如果遵循python逻辑,其中[i:j]表示i<;=x<;j,则可以执行以下操作:
array[i:j] = array[j-1:i-1:-1]
另一种方法是,如果您想得到i<;=x<;=j的元素,那么可以按照@darksky的建议:
您可以完全忘记for循环,然后执行如下操作:
for
def reverse(array, i, j): # Make sure i is less than j if i > j: i, j = j, i # Reverse array[i:j+1] section = array[i:j+1] section.reverse() array[i:j+1] = section
(j+1是为了与函数的行为保持一致;i和{}都被视为包含的,但是Python希望[包含,排除]。)
j+1
i
或者,如果希望保留for循环并避免使用标准函数,则可以执行以下操作:
这里的其他答案以非常聪明的方式执行此操作,但是for循环应该类似于:
for x in range(j - i): array[i+x], array[j-x] = array[j-x], array[i+x]
这不是for,但您也可以执行以下操作:
如果遵循python逻辑,其中[i:j]表示i<;=x<;j,则可以执行以下操作:
另一种方法是,如果您想得到i<;=x<;=j的元素,那么可以按照@darksky的建议:
^{pr2}$您可以完全忘记
for
循环,然后执行如下操作:(}都被视为包含的,但是Python希望[包含,排除]。)
j+1
是为了与函数的行为保持一致;i
和{或者,如果希望保留
^{pr2}$for
循环并避免使用标准函数,则可以执行以下操作:这里的其他答案以非常聪明的方式执行此操作,但是
for
循环应该类似于:相关问题 更多 >
编程相关推荐