有道面试题: L = [2,3,5,4,9,6,8,7,1],从小到大排序,不许用sort,输出[1,2,3,4,5,6,7,8,9]
如果用sort很简单,如果不用sort的话,处理起来就麻烦些,处理思路大致:
创建一个空列表,遍历原先列表,找出最小值,放到空列表中,原列表弹出该值,直到无值。
有了上面的思路,就好处理了:
>>> L = [2,3,5,4,9,6,8,7,1]
>>> T = []
>>> while len(L) > 0:
... m = min(L)
... L.remove(m)
... T.append(m)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
有道面试题: L = [2,3,5,4,9,6,8,7,1],从小到大排序,不许用sort,输出[1,2,3,4,5,6,7,8,9]如果用sort很简单,如果不用sort的话,处理起来就麻烦些,处理思路大致:创建一个空列表,遍历原先列表,找出最小值,放到空列表中,原列表弹出该值,直到无值。有了上面的思路,就好处理了:>>> L = [2,3,5,4,9,6,8...
1 首先,
Python中
sort与
sorted的区别:
python中
列表的内置函数
sort()可以对
列表中的元素进行
排序,
sort()函数是内置函数,会改变当前对象;而全局性的
sorted()函数则对所有可迭代的序列都是适用的,
sorted()函数只会返回一个
排序后的当前对象的副本,而不会改变当前对象。2
sort()
排序2.1对
列表进行简单
排序
1 升序排列
a = [2,9,5,6,7,8]
这题偶然看到的,典型啊,值得马克一记!list=[2,3,5,4,9,6,8,7,1],从小到大排序,不许用sort,输出[1,2,3,4,5,6,,7,8,9]结题思路: 利用min()方法求出最小值,原列表删除最小值,新列表加入最小值,递归调用获取最小值的函数,反复操作list=[2,3,5,4,9,6,8,7,1]
ll=[]
if len(list)>0:
m=min(...
冒泡
排序(交换
排序)原理:
从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后进行下一个元素的比较。如此扫描过一次之后就可确保最后一个元素位于正确的顺序。接着再逐步进行第二次扫描,直到完成所有元素的
排序关系为止。
如,3个数,需要比较2轮。第一轮比较2次,第二轮比较1次。(可以自己画图理解一下。因为每轮比较之后都可以确认最后一个位置,所以比较次数-1)
实现代码如下:
# ......
1、调用sort()方法,默认从小到大排序,也可以指定reverse=True,进行从大到小排序,是在列表之上进行排序,无需额外的空间
lst=[10,20,30,10,200,300,400]
lst.sort()
print(lst)
[10, 10, 20, 30, 200, 300, 400]
lst.sort(reverse=True)
print(lst)
[400, 300, 200, 30, 20, 10, 10]
2、调用内置函数sorted(),和使用sort差不多,但原列表不变
name_list=['abc','bcd','aab','abac']
name_list.sort(key=lambda x:[-ord(i) for i in x])
print(name_list)
[‘bcd’, ‘abc’, ‘abac’, ‘aab’]
我们知道如果列表里是数值比较好处理,直接取负就可以了,但是字符串不支持取负,所以这里的方法是将字符串转ASCII码再取负。
这可以用于多重排序,例如多个维度排序要求不一致,有的要升序,有的要降序的情况。