精华内容
下载资源
问答
  • 学习过python计算机编程语言的同学们都知道,python本身提供了python 列表排序功能,且它的排序算法是稳定的(key相等的两项在排序后的先后次序不变),那么如何如何通过key函数来进行自定义的排序呢?下面的python...

    学习过python计算机编程语言的同学们都知道,python本身提供了python 列表排序功能,且它的排序算法是稳定的(key相等的两项在排序后的先后次序不变),那么如何如何通过key函数来进行自定义的排序呢?

    下面的python源码示例中,我们就要通过python 列表的list.sort来演示一下,如何通过key函数来进行自定义的排序。

    这里说的key函数,其实就是以参加排序的每一项作为输入,而输出则为用来排序的key值。

    #python list 排序

    def my_key1(x):

    return x % 10

    aList = [4, 5, 1, 2, 12, 34, 56, 9 ,80]

    aList.sort() #默认按升序排列

    print(aList)

    aList.sort(reverse = True) #按降序排列

    print(aList)

    #www.iplaypy.com

    aList.sort(key = my_key1) #根据key函数,按照个位数进行升序排列

    print(aList)

    def my_key2(x):

    return x[1]

    aList = [(4,'ab'), (56,'c'), (1,'bb'), (102, 'a')]

    aList.sort(key = my_key2) #按照每个元组的第2分量,即字符串排序

    print(aList)

    玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/base/b2512.html

    相关文章 Recommend

    展开全文
  • 给定一个字符串, 输出出现次数最多的前三个字符, 若两字符出现次数相同, 则按字典顺序排列.# 样例输入aabbbccde# 样例输出b 3a 2c 2就是先将第二字段降序排序, 再将第一字段升序排序, 关键就是sorted函数key的指定, ...

    给定一个字符串, 输出出现次数最多的前三个字符, 若两字符出现次数相同, 则按字典顺序排列.

    # 样例输入

    aabbbccde

    # 样例输出

    b 3

    a 2

    c 2

    就是先将第二字段降序排序, 再将第一字段升序排序, 关键就是sorted函数key的指定, 可以用 lambda 或

    operator.itemgetter

    开始我是这样做的:

    from collections import Counter

    c = Counter(input())

    l=sorted(c.items(), key=lambda s:(-s[1], s[0]))

    for i in l[:3]:

    print(' '.join(map(str, list(i))))

    EDITORIAL给出了三个参考解:

    1.利用字母表

    S = raw_input()

    letters = [0]*26

    for letter in S:

    letters[ord(letter)-ord('a')] += 1

    for _ in range(3):

    max_letter = max(letters)

    for index in range(26):

    if max_letter == letters[index]:

    print chr(ord('a')+index), max_letter

    letters[index] = -1

    break

    2.

    from collections import Counter

    from operator import itemgetter

    for item in (sorted(sorted(Counter(raw_input()).items()), key = itemgetter(1), reverse = True)[:3]):

    print item[0], item[1]

    3.

    from collections import Counter

    for letter, counts in sorted(Counter(raw_input()).most_common(),key = lambda x:(-x[1],x[0]))[:3]:

    print letter, counts most_common 的行为可能在python 2和3之间不同, 没仔细研究

    参考:

    http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=429659&id=3140368

    http://stackoverflow.com/questions/6666748/python-sort-list-of-lists-ascending-and-then-decending

    http://stackoverflow.com/questions/5212870/sorting-a-python-list-by-two-criteria

    展开全文
  • 先看如下代码:listA = [1, 3, 6, 3, 2] newList_1 = listA.sort() print(listA) print(newList_1) 输出的结果是:[1, 2, 3, 3, 6] None 有木有感到很奇怪,为什么listA的值变成了排序后的结果,但是newList_1却是...

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/sinat_35512245/article/details/79584196

    今天在LeetCode上刷题的时候要用到排序函数,刚开始并没有意识到这两个排序函数的区别,导致产生了代码错误,特贴此帖。

    首先这两个函数都能够实现排序的功能,但是原理却有很多的不同。先看如下代码:listA = [1, 3, 6, 3, 2]

    newList_1 = listA.sort()

    print(listA)

    print(newList_1)

    输出的结果是:[1, 2, 3, 3, 6]

    None

    有木有感到很奇怪,为什么listA的值变成了排序后的结果,但是newList_1却是None呢?查看源码:def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__

    """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """

    pass

    原来sort()方法是在原来的列表上直接进行排序,并没有返回一个新的列表,所以返回值为None!

    再看看:listA = [1, 3, 6, 3, 2]

    newList_2 = sorted(listA)

    print(newList_2)

    print(listA)

    输出的结果是:[1, 2, 3, 3, 6]

    [1, 3, 6, 3, 2]

    有木有很神奇?listA并没有发生变化,但是返回的结果就成了排序后的列表。再来看看源码:def sorted(*args, **kwargs): # real signature unknown

    """

    Return a new list containing all items from the iterable in ascending order.

    A custom key function can be supplied to customize the sort order, and the

    reverse flag can be set to request the result in descending order.

    """

    pass

    由以上可知,sorted()函数排好序后会返回一个新的列表,原来的列表并没有发生改变!

    嗨呀,真的是厉害了,我的哥!

    展开全文
  • usr/bin/env python #encoding:utf-8 ''' __author__:沂水寒城 功能:将解析得到的DOM树进行处理 输入:DOM的一层结点 输出:DOM输的一层经过结点标签排序后的结点 ''' def new_list(one_list): result_list=[] ...

        最近在着手做html的相关处理工作,因为前期的想法偏差,使用滑窗机制得到的签名居然和网页文本得到的签名是一模一样的,我调试了很多次都是这样,最终只好暂时搁浅,不明白是哪里出了问题,现在的做法是回归HTML的解析,得到页面的DOM树来进行下一步计算,不使用浏览器内嵌的开源引擎Webkit进行渲染,因为那样带来的结果就是时间代价太高了,对于得到的DOM树可以有进一步的处理得到每一层次的结点进行计算,这里做的工作即使对于每一层结点进行排序输出,因为这样的话更能反映出来层次性质,好了,说了这么多就不废话了,下面是早上刚处理的代码,很low,不喜勿喷,仅仅是实现了我需要的功能,之后可能会有进一步的优化,希望同行可以交流学习一下,我是一个新手

    #!usr/bin/env python
    #encoding:utf-8
    
    '''
    __author__:沂水寒城
    功能:将解析得到的DOM树进行处理
    输入:DOM的一层结点
    输出:DOM输的一层经过结点标签排序后的结点
    '''
    
    
    def new_list(one_list):
        result_list=[]
        test1_dict={}
        list1=[]
        for one in one_list:
            if one.endswith(']'):
                test1_dict[int(one.split('[')[-1][:-1])]=one
            else:
                test1_dict[0]=one
        final_list = sorted(test1_dict.items(), key=lambda e:e[0])
        for i in range(len(final_list)):
            result_list.append(final_list[i][1])
        return result_list
    
    
    def get_one_level_dict(one_level_list):
        result_list=[]
        test_dict={}
        label_list=[]
        for one in one_level_list:
            if one.endswith(']'):
                new_one_list=one.split('[')
                one_key=new_one_list[0]
                label_list.append(one_key)
            else:
                label_list.append(one)
        label_list=list(set(label_list))  #得到一层DOM树的结点种类
        for one_lable in label_list:
            list0=[]
            for one_char in one_level_list:
                if one_char[0:len(one_lable)]==one_lable:
                    list0.append(one_char)
            test_dict[one_lable]=list0  #统计每一类别的结点的结点列表
        final_dict_list=sorted(test_dict.items(), key=lambda e:e[0])
        for i in range(len(final_dict_list)):
            result_list+=new_list(final_dict_list[i][1])
        return result_list
    
    
    if __name__ == '__main__':
        list_test=['comment()[1]', 'comment()[2]', 'comment()[3]', 'comment()[4]', 'comment()[5]', 'comment()[6]', 'div[10]',
     'div[11]', 'div[12]', 'div[13]', 'div[14]', 'div[15]', 'div[16]', 'div[17]', 'div[18]', 'div[19]', 'div[1]', 'div[20]',
      'div[21]', 'div[22]', 'div[23]', 'div[24]', 'div[25]', 'div[2]', 'div[3]', 'div[4]', 'div[5]', 'div[6]', 'div[7]', 
      'div[8]', 'div[9]', 'link[10]', 'link[11]', 'link[12]', 'link[13]', 'link[14]', 'link[1]', 'link[2]', 'link[3]', 
      'link[4]', 'link[5]', 'link[6]', 'link[7]', 'link[8]', 'link[9]', 'meta[1]', 'meta[2]', 'meta[3]', 'meta[4]', 
      'meta[5]', 'script[10]', 'script[11]', 'script[12]', 'script[13]', 'script[14]', 'script[1]', 'script[2]', 
      'script[3]', 'script[4]', 'script[5]', 'script[6]', 'script[7]', 'script[8]', 'script[9]', 'style', 'title']
    
        result_list=get_one_level_dict(list_test)
        print result_list
    
    
        '''
        结果为:
        ['comment()[1]', 'comment()[2]', 'comment()[3]', 'comment()[4]', 'comment()[5]', 'comment()[6]', 
        'div[1]', 'div[2]', 'div[3]', 'div[4]', 'div[5]', 'div[6]', 'div[7]', 'div[8]', 'div[9]', 'div[10]', 'div[11]', 
        'div[12]', 'div[13]', 'div[14]', 'div[15]', 'div[16]', 'div[17]', 'div[18]', 'div[19]', 'div[20]', 'div[21]', 
        'div[22]', 'div[23]', 'div[24]', 'div[25]', 
        'link[1]', 'link[2]', 'link[3]', 'link[4]', 'link[5]', 'link[6]', 'link[7]', 'link[8]', 'link[9]', 'link[10]', 
        'link[11]', 'link[12]', 'link[13]', 'link[14]', 
        'meta[1]', 'meta[2]', 'meta[3]', 'meta[4]', 'meta[5]', 
        'script[1]', 'script[2]', 'script[3]', 'script[4]', 'script[5]', 'script[6]', 'script[7]', 'script[8]', 
        'script[9]', 'script[10]', 'script[11]', 'script[12]', 'script[13]', 'script[14]',
         'style', 
         'title']
        '''
    
    

        好了,今天就说这么

        Keep  Learning...

    展开全文
  • n=22,则返回列表[1 ,1, 2, 3, 5, 8, 13, 21](注意:该函数是返回一个列表,不是输出一个列表)。所谓“斐波那契数列”,是指第1项和第2项都是1,其它各项都等于前两项之和。注意:程序按照下面的框架编写,只在...
  • 代码 import random list_1=[] list_2=[] #随机生成500个点 for i in range(500): list_1.append(random.randint(15,100)) print('生成的随机500个数列表为:\n', list_1) ...print('升序输出所有不同的数字:\n...
  • 编写程序,输入使用空格分隔的两个整数,然后按升序输出
  • 按降序输出 2~300间的素数并按升序输出 2~300间的非素数 请在【python的爬虫与数据分析之路】gzh后台,回复‘作业’获取答案
  • python怎么升序和降序排序

    千次阅读 2020-03-18 05:24:53
    python怎么升序和降序排序 1、首先打开cmd命令提示符,输入指令“ipython”打开python的命令行工具: 2、在命令行中...
  • Python 代码: 测试环境:Win10(64位)Python 3.8.5 import math # 为了使用下面的平方根函数sqrt prime_list=[] new_prime_list=[] n=int(input("你想判定几个整数:")) num_list=list(map(int, input("请输入要...
  • 输入字符串按字符顺序升序输出

    千次阅读 2018-05-10 17:12:49
    题目描述:输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。输入:测试数据有多组,输入字符串。输出:对于每组输入,输出处理后的结果。样例输入:bacd样例输出:abcdc语言代码:#...
  • python怎么升序和降序排序?

    千次阅读 2020-03-03 16:35:39
    python怎么升序和降序排序 推荐:《python视频教程》 1、首先打开cmd命令提示符,输入指令“ipython”打开python的命令行工具: 2、在命令行中先定义一个变量number数组,里面写入几个数,并用sorted函数对number...
  • 范围[-1000,1000] from collections import OrderedDict import random lst = sorted([(random.randint(-1000,1000))for i in range(100)]) print(lst,end='\n\n') od = OrderedDict() ... od.setdefa...
  • 以下程序的功能是随机生成 100 个 97-122 之间的正整数(包括 97 和 122),并将一个区间内的数取出并按升序输出。VB实现的代码如下:Private Sub Command1_Click()Dim a(1 To 100) As IntegerDim i As Integer, x...
  • 范围[-1000,1000]from collections import OrderedDictimport randomlst = sorted([(random.randint(-1000,1000))for i in range(100)])print(lst,end='\n\n')od = OrderedDict()for k in lst:od.setdefault(k,0)od...
  • python升序降序排列

    万次阅读 2018-05-11 14:26:16
    题目来自大学计算机–Python算法实践(东北大学) 考试 初始化如下列表 alist = [20170123, 61, 20170233, 97, 20170123, 72, 20170233, 65, 20170110, 97] 该列表中下标为偶数的元素表示某个学生的学号...
  • 给定一个字符串, 输出出现次数最多的前三个字符, 若两字符出现次数相同, 则按字典顺序排列.# 样例输入aabbbccde# 样例输出b 3a 2c 2就是先将第二字段降序排序, 再将第一字段升序排序, 关键就是sorted函数key的指定, ...
  • 给定一个字符串, 输出出现次数最多的前三个字符, 若两字符出现次数相同, 则按字典顺序排列.# 样例输入aabbbccde# 样例输出b 3a 2c 2就是先将第二字段降序排序, 再将第一字段升序排序, 关键就是sorted函数key的指定, ...
  • <p style="text-align:center"><img alt="" src="https://img-ask.csdnimg.cn/upload/1622546900331.PNG" /></p>  </p>
  • 原列表:[1,5,6,88,99] 待插入数字:55变化后:...方法一:切片a = [1, 5, 6, 88, 99]b = a[0:3] + [55] + a[3:5]print(b) #=>输出[1, 5, 6, 55, 88, 99]方法二:保存数组最大值,然后逐一添加a = [1, 5, 6, 88, 99...
  • 今天在python教程上看到一个列表逆序输出的列子: lists = [1,2,3] prinprint li[1:] #输出[2,3,4,5,6,7],省略终止索引,表示取起始索引之后的所有值,等效于li[1:len(li)] print li[:3] #输出[1,2,3],省略起始...
  • /* *程序的版权和版本声明部分: ...*All rights reserved. *文件名称: *作者:张立锋 *完成日期:2013年11月27日 *版本号:v1.0 *对任务及求解方法的描述部分:...*程序输出: *问题分析: *算法设计: */ #include u
  • python输出字典key

    万次阅读 2018-04-25 17:32:35
    输出字典key 给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以’,’连接,如‘1,2,3’。要求key按照字典序升序排列(注意key可能是字符串)。 例如:a={1:1,2:2,3:3}, 则输出:1,2,3 2.说明 要解决以下三...
  • Python】如何实现列表的升序排列

    千次阅读 2020-04-10 16:00:54
    # 将2个列表合并,并升序输出 list1 = [1,44,7,9,5,38] list2 = [7,6,34,90,2] list3 = list1+list2 list3.sort() print(list3) # 将列表数据反转输出,非降序,仅反转 list2.reverse() print(list2) # 将列表数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,856
精华内容 7,542
关键字:

python升序输出

python 订阅