【问题标题】:Using for loops in sorting numbers in list使用 for 循环对列表中的数字进行排序
【发布时间】:2015-10-08 15:10:58
【问题描述】:
def insert3(x,ss):
    left = [] #why this need to add properly by list, or not it just return the recent result.
    while ss!= []:
        for y in ss:
            if x<= ss[0]:
                return left + [x] + ss[0:]
            else:
                ss, left = ss[1:], left + [ss[0]]
        return left + ss + [x]

print(insert3(6,[2,4,5,7,8]))

对于函数来说,for循环的正确用法吗?

我已经改变了一点。这是正确的吗?

def insert3(x,ss):
    left = []
    for y in ss:
        if x<= ss[0]:
            return left + [x] + ss[0:]
        else:
            ss, left = ss[1:], left + [ss[0]]
    return left + ss + [x]

print(insert3(6,[2,4,5,7,8])) 

【问题讨论】:

  • 你是什么意思“正确”?有用吗?
  • 它确实有效,但它说 y 是未使用的变量。
  • 好吧,看看你的代码 - 你有没有使用 y
  • 意思是即使我删除了整个 y... s: ,结果还是一样的,对吧?
  • 何不试试看?

标签: python sorting for-loop


【解决方案1】:

您为什么要编写复杂的代码来插入排序列表?你可以使用类似的东西:

>>> x = [2,4,5,7,8]
>>> x.append(6)
>>> x.sort()
>>> x
[2, 4, 5, 6, 7, 8]

除非您遇到巨大的性能瓶颈,否则最好只使用该语言的功能。我喜欢将这种优化称为开发工作。

【讨论】:

  • 这是我的课堂作业,所以不得不这样做。
【解决方案2】:

question 使用 bisect 将是解决问题的好方法。另见wikipedia。但是,您尝试做的一个更简单的示例是:

def Insert(val, list):
    for i, entry in enumerate(list):
        if val < entry:
            return list[0:i] + [val] + list[i:]
print(Insert(6,[2,4,5,7,8]));

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2019-12-03
    • 2019-03-14
    • 2018-07-29
    • 2018-01-31
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多