Python 排序sorted

sort、sorted

  • 可以按照长短,大小,英文字母的顺序对可迭代的序列排序生成新的序列。
  • 这里只展示sorted()的用法

sorted(iterable, key=None, reverse=False)  #注在python2中该函数还有个cmp参数,不过在3中取消了
  • 参数:
方法 描述
iterable 可迭代对象。
cmp (了解):用于比较的函数,比较什么由key决定;
key 主要是用来进行比较的元素,只有一个参数。用列表元素的某个属性或函数作为关键字,有默认值,迭代集合中的一项(指定可迭代对象中的一个元素来进行排序。)
reverse 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
  • 返回值:
    返回重新排序的列表。

  • 代码

    list = [5, 2, 3, 1, 4]
    new_list = sorted(list)
    print(new_list,list)
    #[1, 2, 3, 4, 5] [5, 2, 3, 1, 4]
    list = [5, 2, 3, 1, 4]
    new_list = sorted(list,reverse = True)
    print(new_list,list)
    #[5, 4, 3, 2, 1] [5, 2, 3, 1, 4]

    sorted配合lambda进行关键字排序

  • 按照某个元素排序

    list = [('b',2),('a',1),('c',3),('d',4)]
    new_list = sorted(list, key=lambda list:list[1],reverse=True) #序列为第一个参数的序列(list[1]表示按任意元素中索引为1的元素排序)
    print(new_list)
    #[('d', 4), ('c', 3), ('b', 2), ('a', 1)]
  • 按照元素长度排序

    List = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
    def f(x):          
        return len(x)
    new_list = sorted(List,key = f)    #按照元素长度排序
    print(new_list)
    #[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
  • 任意元素排序

    
    List = ['Chr1-10.txt','Chr1-1.txt','Chr1-2.txt','Chr1-14.txt','Chr1-3.txt','Chr1-20.txt','Chr1-5.txt']
    def func(element):
    return int(element.split('-')[1].split('.')[0])#对元素进行连续两次切片操作(比较函数的参数表示列表中的任意元素)

new_list = sorted(List, key=func)

另外一种写法

new_list = sorted(List, key=lambda d : int(d.split('-')[-1].split('.')[0]))

print(new_list)

['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']


### 练习
- 对下面的list进行排序
    ```py
    aa = [
        ['L1_Chr_CharB_RIG2:Geometry', 'L1_Chr_CharB_RIG1:Geometry'],
        ['L1_Chr_CharC_RIG1:Geometry', 'L1_Chr_CharC_RIG:Geometry'],
        ['L1_Chr_CharA_RIG1:Geometry', 'L1_Chr_CharA_RIG:Geometry']
        ]
  • 代码
    我这里只是给出其中的一种方法,进行排序的方法并不是只有这一种

    def sort_List_list(aa):
        #创建一个列表用来存排序后的数据
        bb=[]
        #遍历传入的列表,优先对list中的list排序
        for item in range(len(aa)):
            #排序
            aa[item].sort(reverse=False)
            #因为符号':'ASCII码在数字的后面,没有数字的会排在最后,这里用一个冒泡的写法,对条件为【len()>=2的 且 item的最后一个没有数字】的最后一个的值与第一个进行替换,
            if aa[item][len(aa[item])-1].split(':')[0].rsplit('G')[1]=='' and len(aa[item]) >= 2:
                ite=aa[item][0]
                aa[item][0]=aa[item][len(aa[item])-1]
                aa[item][len(aa[item])-1]=ite
            #将排序后的值填入新的list
            bb.append(aa[item])
        #用lambda+sorted对list进行排序,标准为第一项
        bb = sorted(bb, key=lambda bb : bb[0])
        return bb
    aa = [
        ['L1_Chr_CharB_RIG2:Geometry', 'L1_Chr_CharB_RIG1:Geometry'],
        ['L1_Chr_CharC_RIG1:Geometry', 'L1_Chr_CharC_RIG:Geometry'],
        ['L1_Chr_CharA_RIG1:Geometry', 'L1_Chr_CharA_RIG:Geometry']
        ]
    aa=sort_List_list(aa)
    for ietm in aa:
        print ietm
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇