‘壹’ python如何对一组数排序
python对一组数排序的方法:
1、使用sorted()方法可以进行升序排序
2、可以operator模块方法进行多级排序
operator 模块方法允许多级排序。例如,可以先按 grade 排序,然后再按 age 排序
更多Python知识,请关注:Python自学网!!
‘贰’ 鐢╬ython缂栧啓绋嫔簭锛屼粠阌鐩樿緭鍏ヤ竴涓钖链夋暣鏁板厓绱犵殑鍒楄〃锛屽皢镓链夊伓鏁版寜鍗囧簭鎺掑垪鍦ㄥ垪镙囧墠闱锛屾墍链夊囨暟锛
鍙浠ヤ娇鐢 Python 镄勫垪琛ㄥ垏鐗囧拰鎺掑簭鍑芥暟𨱒ュ疄鐜拌繖涓锷熻兘銆傚叿浣撴ラゅ备笅:
浠庨敭鐩樿緭鍏ヤ竴涓钖链夋暣鏁板厓绱犵殑鍒楄〃銆
浣跨敤鍒楄〃鍒囩墖鎶链鍙栧嚭鍒楄〃涓镄勫伓鏁板拰濂囨暟锛屽垎鍒瀛桦偍鍦ㄤ笉钖岀殑鍒楄〃涓銆
瀵逛袱涓鍒楄〃杩涜屾帓搴忥纴灏嗗伓鏁板垪琛ㄦ寜镦у崌搴忔帓鍒楁斁鍦ㄥ囨暟鍒楄〃鍓嶉溃銆
灏嗘帓搴忓悗镄勫伓鏁板垪琛ㄥ拰鎼忚倖濂囨暟鍒楄〃钖埚苟鎴愪竴涓鍒楄〃銆
杈揿嚭钖埚苟钖庣殑鍒楄〃銆
涓嬮溃鏄鍏蜂綋镄勪唬镰佸疄鐜:
Copy code
list1 = input("璇疯緭鍏ヤ竴涓钖链夋暣鏁板厓绱犵殑鍒楄〃:")
list2 = []
list3 = []
for i in list1:
if i % 2 == 0:
list2.append(i)
else:
list3.append(i)
list4 = list2 + list3
list4.sort()
print("钖埚苟钖庣殑鍒楄〃涓:"娓i摼, list4)
鍦ㄨ繖涓浠g爜涓锛岄栧厛锘烘佽娇浠庨敭鐩樿緭鍏ヤ竴涓钖链夋暣鏁板厓绱犵殑鍒楄〃锛岀劧钖庝娇鐢ㄥ垪琛ㄥ垏鐗囨妧链鍙栧嚭鍒楄〃涓镄勫伓鏁板拰濂囨暟锛屽垎鍒瀛桦偍鍦ㄤ笉钖岀殑鍒楄〃涓銆傛帴镌瀵逛袱涓鍒楄〃杩涜屾帓搴忥纴灏嗗伓鏁板垪琛ㄦ寜镦у崌搴忔帓鍒楁斁鍦ㄥ囨暟鍒楄〃鍓嶉溃銆傛渶钖庯纴灏嗘帓搴忓悗镄勫伓鏁板垪琛ㄥ拰濂囨暟鍒楄〃钖埚苟鎴愪竴涓鍒楄〃锛岃緭鍑哄悎骞跺悗镄勫垪琛ㄣ
‘叁’ python 二维数组排序
python有自带的sorted函数。
sorted 语法:
sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
比如,对二维数组按照第一个元素排序:arr = list(sorted(arr, key=lambda x: x[0]))
‘肆’ python, 非空元组列表中,如何对每个元组中元素的平均值按升序排序急求!代码打一下
用 List 类的 sort 方法可以很方便实现。
sample = [(2, 6, 4, 5), (1, 7), (4, 3, 4), (2, 3, 8, 1), (4,)]
sample.sort(key=lambda x: len(x))
sample.sort(key=lambda x: sum(x)/len(x))
第一次根据元组长度排序,保证长度较短的元素相对位置靠前(如果没有长度排序,直接进行平均值排序,元素 (1, 7) 会排在 (4,) 的前面,无法得到正确的顺序);
第二次根据元组元素的平均值排序,得到正确的结果;
排序后 sample 的输出结果:
[(2, 3, 8, 1), (4, 3, 4), (4,), (1, 7), (2, 6, 4, 5)]
‘伍’ 用python对10个数进行排序
sort_values(by,axis=0,ascending=True,inplace=False,kind='quicksort',na_position='last')
by:可以填入字符串或者字符串组成的列表。也就是说,如果axis=0,那么by="列名";如果axis=1,那么by="行名"。
axis:{0 or ‘index’, 1 or ‘columns’}, default 0,意思就是如果axis=0,就按照索引排序,即纵向排序;如果axis=1,则按列排序,即横向排序。默认是axis=0。
ascending:输入布尔型,True是升序,False是降序,也可以可以是[True,False],即第一个字段升序,第二个字段降序 。
inplace: 输入布尔型,是否用排序后的数据框替换现有的数据框(这个在之前的文章写过很多次了~)
kind:排序的方法,{‘quicksort’, ‘mergesort’, ‘heapsort’},默认是使用‘quicksort’。这个参数用的比较少,大家可以试一试。
na_position :{‘first’, ‘last’},缺失值的排序,也就说决定将缺失值放在数据的最前面还是最后面。first是排在前面,last是排在后面,默认是用last。
创建数据表:
scores=pd.DataFrame([[87,56,85],[46,87,97],[34,65,86]],
columns=['jack','rose','mike'])
scores
‘rose’这一列进行降序排序:
df_sc=scores.sort_values(by='rose',ascending=False)
df_sc
‘mike’这一列进行升序排序:
df_sc=scores.sort_values(by='mike',ascending=True)
df_sc
对第0行进行升序排序:
scores.sort_values(by=0,axis=1,ascending=True)
我们再尝试对第1行进行升序,第0行进行降序:
scores.sort_values(by=[1,0],axis=1,ascending=[True,False]
‘陆’ python sort()用法
Python中的sort()方法用于数组排序,下面以实例形式对此加以详细说明:
一、基本形式
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
x=[4,6,2,1,7,9]x.sort()
printx#[1,2,4,6,7,9]
如果需要一个排序好的副本,同时保持原有列表不变,怎么实现呢
x=[4,6,2,1,7,9]
y=x[:]
y.sort()
printy#[1,2,4,6,7,9]
printx#[4,6,2,1,7,9]
注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。
另一种获取已排序的列表副本的方法是使用sorted函数:
x=[4,6,2,1,7,9]
y=sorted(x)
printy#[1,2,4,6,7,9]
printx#[4,6,2,1,7,9]
sorted返回一个有序的副本,并且类型总是列表,如下:
printsorted('Python')#['P','h','n','o','t','y']
二、自定义比较函数
可以定义自己的比较函数,然后通过参数传递给sort方法:
defcomp(x,y):
ifx<y:
return1
elifx>y:
return-1
else:
return0
nums=[3,2,8,0,1]
nums.sort(comp)
printnums#降序排序[8,3,2,1,0]
nums.sort(cmp)#调用内建函数cmp,升序排序
printnums#降序排序[0,1,2,3,8]
三、可选参数
sort方法还有两个可选参数:key和reverse
1、key在使用时必须提供一个排序过程总调用的函数:
x=['mmm','mm','mm','m']
x.sort(key=len)
printx#['m','mm','mm','mmm']
2、reverse实现降序排序,需要提供一个布尔值:
y=[3,2,8,0,1]
y.sort(reverse=True)
printy#[8,3,2,1,0]
‘柒’ python中怎么让前5个升序,后五个降序,派Python中输入十个数字,怎么让前五个升序
分成两个列表分别排序,代码如下:
s = input().split()
l1 = [ int(x) for x in s[:5] ] # 前5个数字
l2 = [ int(x) for x in s[-5:] ] # 后5个数字
l1.sort() # 前5个数字升序
l2.sort(reverse=True) # 后5个数字降序
print(l1 + l2)
运行结果如下:
输出符合题意,望采纳~