我刚刚在python-3中实现了Quicksort,下面是每个子数组中涉及的交换机制的摘录。
现在,我不禁注意到它看起来非常像基于C的循环。这是有道理的,因为我要从事很长时间的C ++开发。 我想知道是否可以使此循环更像 pythonic 。
我尝试使用for items in array
,但这没有帮助,因为迭代器不应在循环的每一轮中增加不。
任何建议都值得赞赏!
# last elem is pivot at start
pivPos = end
# iterate the list and bring pivot to correct position
count = 0
while (count != pivPos):
# swap places with elem just before pivot
if arr[count] >= arr[pivPos]:
temp = arr[count]
arr[count] = arr[pivPos - 1]
arr[pivPos - 1] = temp
# now swap the pivot
arr[pivPos - 1] = arr[pivPos]
arr[pivPos] = temp
# update pivPos
pivPos -= 1
else:
count += 1
continue
答案 0 :(得分:3)
此部分:
print([i for i in d if len(set(i) - set(d[i])) == 2])
可以这样写而无需temp = arr[count]
arr[count] = arr[pivPos - 1]
arr[pivPos - 1] = temp
arr[pivPos - 1] = arr[pivPos]
arr[pivPos] = temp
:
temp
arr[count], arr[pivPos-1], arr[pivPos] = arr[pivPos-1], arr[pivPos], arr[count]
也是多余的,您可以将其删除,并且代码的行为相同。
但是真正的pythonic方式是:
continue
完整的编辑代码易于参考:
arr.sort()