Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中清理此选择排序函数? 我刚刚完成了,并将C++中的选择排序函数转换为Python。p>_Python_Sorting_Refactoring_Selection Sort - Fatal编程技术网

如何在Python中清理此选择排序函数? 我刚刚完成了,并将C++中的选择排序函数转换为Python。p>

如何在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]:

我觉得我编写这个代码太像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]:
                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)
  • 或者,您可以使用
    A.index(min(A[i:])
    查找最小值索引。这在很大程度上取决于口味,如果列表非常大,则速度会较慢。IMHO看起来既漂亮又简洁:
蟒蛇2:

  • 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)
  • 或者,您可以使用
    A.index(min(A[i:])
    查找最小值索引。这在很大程度上取决于口味,如果列表非常大,则速度会较慢。IMHO看起来既漂亮又简洁:
蟒蛇2:

  • range
    创建一个列表-迭代所有元素-立即,
    xrange
    创建一个惰性生成器-仅在调用元素时迭代元素-这是首选,而且通常更快(在您提供的代码段中不是更快)
概述:

  • 在专业代码审查中,您可能需要提供一个docstring,大致类似于:
def选择_排序(A):
“”“选择\u排序对对象执行不稳定的就地排序”
A--要排序的列表。
返回一个已排序的值。
"""
对于范围(0,len(A)-1)内的i:
min_idx=i
对于范围(i+1,len(A))内的j:
如果A[j]
资料来源:


如果你的代码有效,你应该询问关于的进一步建议。如果你的代码有效,你应该询问关于的进一步建议。是的,Python充满了很棒的列表函数。但是我很想知道如何清理这个代码示例,如果不是为了更熟悉Python中的for循环的话。但是我很想知道如何清理这个代码示例,如果不是为了更熟悉Python中的for循环的话。在
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