如何在Python中清理此选择排序函数? 我刚刚完成了,并将C++中的选择排序函数转换为Python。p>
我觉得我编写这个代码太像C程序员了,而我知道Python有许多内置函数用于for循环,可以清理它。我只是不知道从哪里开始 我可以在这段代码中更改哪些内容以使其更具习惯性如何在Python中清理此选择排序函数? 我刚刚完成了,并将C++中的选择排序函数转换为Python。p>,python,sorting,refactoring,selection-sort,Python,Sorting,Refactoring,Selection Sort,我觉得我编写这个代码太像C程序员了,而我知道Python有许多内置函数用于for循环,可以清理它。我只是不知道从哪里开始 我可以在这段代码中更改哪些内容以使其更具习惯性 def selection_sort(A): for i in range(0, len(A) - 1): min_idx = i for j in range(i + 1, len(A)): if A[j] < A[min_idx]:
def selection_sort(A):
for i in range(0, len(A) - 1):
min_idx = i
for j in range(i + 1, len(A)):
if A[j] < A[min_idx]:
min_idx = j
if min_idx != i:
A[i], A[min_idx] = A[min_idx], A[i]
return A
def选择_排序(A):
对于范围(0,len(A)-1)内的i:
min_idx=i
对于范围(i+1,len(A))内的j:
如果A[j]
Lists有一个函数sort(),它可以为您完成工作。Lists有一个函数sort(),它可以为您完成工作。这段代码实际上看起来已经非常像python了!值得注意的是,您可以使用x,y=y,x
习惯用法交换值,这在Python中是非常受鼓励的
蟒蛇2和蟒蛇3:
相当于范围(0,x)
范围(x)
- 或者,您可以使用
查找最小值索引。这在很大程度上取决于口味,如果列表非常大,则速度会较慢。IMHO看起来既漂亮又简洁:A.index(min(A[i:])
创建一个列表-迭代所有元素-立即,range
创建一个惰性生成器-仅在调用元素时迭代元素-这是首选,而且通常更快(在您提供的代码段中不是更快)xrange
- 在专业代码审查中,您可能需要提供一个docstring,大致类似于:
def选择_排序(A):
“”“选择\u排序对对象执行不稳定的就地排序”
A--要排序的列表。
返回一个已排序的值。
"""
对于范围(0,len(A)-1)内的i:
min_idx=i
对于范围(i+1,len(A))内的j:
如果A[j]
资料来源:
x,y=y,x
习惯用法交换值,这在Python中是非常受鼓励的
蟒蛇2和蟒蛇3:
相当于范围(0,x)
范围(x)
- 或者,您可以使用
查找最小值索引。这在很大程度上取决于口味,如果列表非常大,则速度会较慢。IMHO看起来既漂亮又简洁:A.index(min(A[i:])
创建一个列表-迭代所有元素-立即,range
创建一个惰性生成器-仅在调用元素时迭代元素-这是首选,而且通常更快(在您提供的代码段中不是更快)xrange
- 在专业代码审查中,您可能需要提供一个docstring,大致类似于:
def选择_排序(A):
“”“选择\u排序对对象执行不稳定的就地排序”
A--要排序的列表。
返回一个已排序的值。
"""
对于范围(0,len(A)-1)内的i:
min_idx=i
对于范围(i+1,len(A))内的j:
如果A[j]
资料来源:
min\u idx=a.index(min(a[I:])
行中使用冒号分隔符和.index()函数,阅读起来会更好。docstrings源代码也很受欢迎。非常感谢!在min\u idx=a.index(min(a[i:])
行中使用冒号分隔符和.index()函数可以更好地阅读。docstrings源代码也很受欢迎。非常感谢!
def selection_sort(A):
for i in range(0, len(A) - 1):
min_idx = A.index(min(A[i:]))
if min_idx != i:
A[i], A[min_idx] = A[min_idx], A[i]
return A
def selection_sort(A):
"""selection_sort performs an unstable in-place sort on A
A -- list to be sorted.
Returns A, sorted.
"""
for i in range(0, len(A) - 1):
min_idx = i
for j in range(i + 1, len(A)):
if A[j] < A[min_idx]:
min_idx = j
if min_idx != i:
A[i], A[min_idx] = A[min_idx], A[i]
return A