精华内容
下载资源
问答
  • python 对字符串list中的元素进行排序

    千次阅读 2020-12-02 16:17:59
    python 对字符串list中的元素进行排序引言利用`sort() 函数`list进行排序利用`sorted() 函数`list进行排序`sorted()函数`的可迭代对象iterable为字典时字典 in 操作符按照字符串中的数字的大小进行排序 ...

    引言

    sort() 函数sorted() 函数的区别:

    • sorted() 函数可以对所有可迭代的对象 iterable进行排序操作,但是sort()函数 只能应用在 list 上的方法。
    • list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

    利用sort() 函数对list进行排序

    描述:

    sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。

    语法:

    list.sort( key=None, reverse=False)
    

    参数:

    • key指定用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
    • reverse排序规则,reverse = True 降序, reverse = False 升序(默认)。

    返回值:

    该方法没有返回值,但是会对列表的对象进行排序。

    典型范例:

    # 例1:
    aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
    aList.sort()   # sort()函数没有返回值,使用时无赋值(=)
    print ( "List : ", aList)
    >>>
    List :  ['Facebook', 'Google', 'Runoob', 'Taobao']
    
    ##或者,使用sorted()函数亦可实现同等效果
    
    aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
    aList = sorted(aList)  # sorted()函数有返回值,使用时赋值(=)
    print ( "List : ", aList)
    >>>
    List :  ['Facebook', 'Google', 'Runoob', 'Taobao']
    
    # 例2:
    # 列表
    vowels = ['e', 'a', 'u', 'o', 'i']
    # 降序排列
    vowels.sort(reverse=True)  # 参数reserve可以设置排序方式
    # 输出结果
    print ( '降序输出:', vowels )
    >>>
    降序输出: ['u', 'o', 'i', 'e', 'a']
    
    # 例3  通过指定列表中的元素排序来输出列表
    # 获取列表的第二个元素
    def takeSecond(elem):
        return elem[1]
     
    # 列表
    random = [(2, 2), (3, 4), (4, 1), (1, 3)]
    # 指定第二个元素排序
    random.sort(key=takeSecond) # 即:根据list中元组的第二个元素进行排序
    # 输出类别
    print ('排序列表:', random)
    >>>
    排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
    
    # 对list中元素为int、str、float等均无影响(But,亲测str为“汉字”时,排序效果不符合预期,后续解决!!!!)
    random = [('c', 'Beijing'), ('g', 'Shanghai'), ('a', 'Guangzhou'), ('h', 'Xiamen')]
    # 指定第二个元素排序
    random.sort(key=takeSecond)
    # 输出类别
    print("排序列表:", random)
    >>>
    排序列表: [('c', 'Beijing'), ('a', 'Guangzhou'), ('g', 'Shanghai'), ('h', 'Xiamen')]
    
    # 或者,使用sorted()函数亦可实现同等效果
    random = [('c', 'Beijing'), ('g', 'Shanghai'), ('a', 'Guangzhou'), ('h', 'Xiamen')]
    random = sorted(random , key=lambda x: x[1])
    # 输出类别
    print("排序列表:", random)
    >>>
    排序列表:[('c', 'Beijing'), ('a', 'Guangzhou'), ('g', 'Shanghai'), ('h', 'Xiamen')]
    
    # sort()函数无返回值
    list1 = 'as,jj,bk'
    temp = list1.strip().split(',').sort()  # 由于sort()函数无返回值,故无法进行赋值操作
    # temp.sort()
    print(temp)
    >>>
    None
    
    #修改后如下:
    list1 = 'as,jj,bk'
    temp = list1.strip().split(',')
    temp.sort()
    print(temp)
    >>>
    ['as', 'bk', 'jj']
    # 或者
    list1 = 'as,jj,bk'
    temp=sorted(list1.strip().split(','))
    # temp = sorted(temp)
    print(temp)
    >>>
    ['as', 'bk', 'jj']
    

    利用sorted() 函数对list进行排序

    语法:

    sorted(iterable, key=None, reverse=False)  
    

    参数:

    • iterable可迭代对象

    • key指定用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

    • reverse排序规则,reverse = True 降序 , reverse = False 升序(默认)。

    返回值:

    该方法返回重新排序的列表

    典型范例:

    # 例1:
    sorted([5, 2, 3, 1, 4])  # 默认为升序
    >>>
    [1, 2, 3, 4, 5]
    
    """
    你也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。
    通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。
    """
    # 利用key进行倒序排序
    example_list = [5, 0, 6, 1, 2, 7, 3, 4]
    result_list = sorted(example_list, key=lambda x: x*-1)
    print(result_list)
    >>>
    [7, 6, 5, 4, 3, 2, 1, 0]
    # 要进行反向排序,也通过传入第三个参数 reverse=True:
    example_list = [5, 0, 6, 1, 2, 7, 3, 4]
    sorted(example_list, reverse=True)
    >>>
    [7, 6, 5, 4, 3, 2, 1, 0]
    

    sorted()函数的可迭代对象iterable为字典时

    可迭代对象iterable为字典时,利用sorted()函数可以根据字典的key对可迭代对象进行排序,结果返回按key排序后的新list。

    # 例1
    random = {1: 'D', 5: 'B', 8: 'B', 4: 'E', 2: 'A'}
    random = sorted({1: 'D', 5: 'B', 8: 'B', 4: 'E', 2: 'A'})
    print("排序后:", random)
    >>>
    排序后: [1, 2, 4, 5, 8]
    

    参考链接:
    Python3 List sort()方法
    Python3 sorted()

    字典 in 操作符

    描述:

    Python 字典中 in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。

    语法:

    key in dict
    

    如果键在字典dict里返回true,否则返回false。

    综上所述:

    执行[x for x in dict_x]语句,输出结果为由字典dict的键组成的list。例如:

    b = {"age":20,"name":"a"}
    [x for x in b]  # 输出由dict的键组成的列表list
    >>>
    ['age', 'name']
    a = {1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}
    [x for x in a] # 输出由dict的键组成的列表list
    >>>
    [1, 2, 3, 4, 5]
    

    知识点补充——切片
    \quad
    切片是Python序列的一个重要操作,适用于列表、元组、字符串、range对象等类型。 字典不存在切片操作
    \quad
    切片使用2个冒号分隔的3个数字来完成,第一个数字表示切片的开始位置(默认为0),第二个数字表示切片截至(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时可以省略最后一个冒号。

    由多个含相同键key的dict组成的list可以通过指定相同键key来对各个字典dict进行排序;如果是由多个含不相同键key的dict组成的list则无法执行此操作。 示例如下:

    ### 正确示范:
    """
    由多个含相同键key的dict组成的list可以通过相同键key来对各个字典dict进行排序
    """
    # sorted 的应用,也可以通过 key 的值来进行数组/字典的排序,比如
    array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
    array = sorted(array,key=lambda x:x["age"])
    print(array)
    >>>
    [{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
    
    # 进阶示例:
    # 多列排序——先按照成绩降序排序,相同成绩的按照名字升序排序:
    # 先按照成绩降序排序,相同成绩的按照名字升序排序:
    d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
    l = sorted(d1, key=lambda x:(-x['score'], x['name']))
    print(l)
    >>>
    [{'name': 'alice', 'score': 38}, {'name': 'christ', 'score': 28}, {'name': 'darl', 'score': 28}, {'name': 'bob', 'score': 18}]
    
    
    
    ### 错误示范:
    """
    如果是由多个含不相同键key的dict组成的list则无法执行此操作
    """
    # 列表
    random = [{2:'北京'}, {3: '上海'}, {4:'广州'}, {1:'厦门'}]
    # 指定第二个元素排序
    random = sorted(random, key=lambda x: x[1])  # 由于各个字典dict不存在相同键key。因此,此处无法通过指定某个相同“key”对各个字典dict进行排序。另外,字典也不允许做切片,所以,不能通过 x[1]取到dict的value值。
    # 输出类别
    print("排序列表:", random)
    >>>
    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    <ipython-input-228-41a0692456fc> in <module>
          2 random = [{2:'北京'}, {3: '上海'}, {4:'广州'}, {1:'厦门'}]
          3 # 指定第二个元素排序
    ----> 4 random = sorted(random, key=lambda x: x[1])
          5 # 输出类别
          6 print("排序列表:", random)
    
    <ipython-input-228-41a0692456fc> in <lambda>(x)
          2 random = [{2:'北京'}, {3: '上海'}, {4:'广州'}, {1:'厦门'}]
          3 # 指定第二个元素排序
    ----> 4 random = sorted(random, key=lambda x: x[1])
          5 # 输出类别
          6 print("排序列表:", random)
    
    KeyError: 1
    
    # 如果将字典格式组成的list,改为由元组格式组成的list,则可以正常运行上述代码
    
    # 获取列表的第二个元素
    def takeSecond(elem):
        return elem[1]
    # 列表
    random = [(2, '北京'), (3, '上海'), (4, '广州'), (1, '厦门')]
    # 指定第二个元素排序
    random.sort(key=takeSecond)  # 根据元组的第二个元素进行排序
    # 输出类别
    print("排序列表:", random)
    >>>
    排序列表: [(3, '上海'), (2, '北京'), (1, '厦门'), (4, '广州')]
    
    ## 或者直接使用匿名函数lambda,借助元组切片指定排序的key来实现
    # 列表
    random = [(2, '北京'), (3, '上海'), (4, '广州'), (1, '厦门')]
    # 指定第二个元素排序
    random.sort(key=lambda x: x[0])  # 通过元组切片x[0]来指定取各个元组的第一个元素
    # 输出类别
    print("排序列表:", random)
    >>>
    排序列表: [(1, '厦门'), (2, '北京'), (3, '上海'), (4, '广州')]
    

    按照字符串中的数字的大小进行排序

    譬如,存在一组记录文件,分别为‘1.dat’,‘2.dat’…,如何让这些字符串按照数字进行排列?

    1、把该文件夹中的所有记录文件名读到一个列表中;

    2、首先通过正则表达式,提取出字符串中的数字;

    3、排序,选择built-in函数sorted进行排序;

    示例代码如下:

    s = ['1.dat','10.dat','5.dat']
    new = sorted(s, key = lambda i:int(re.match(r'(\d+)',i).group()))
    print(new)
    >>>
    ['1.dat', '5.dat', '10.dat']
    
    ## 或者
    s = ['1.dat','10.dat','5.dat']
    s.sort(key = lambda i:int(re.match(r'(\d+)',i).group()))
    print(s)
    >>>
    ['1.dat', '5.dat', '10.dat']
    

    关于re.match(r'(\d+)',i).group()的用法,详见Python3 正则表达式

    展开全文
  • 本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下: 先来看看如下代码: string = ''' the stirng Has many line In THE fIle jb51 net ''' list...
  • python 对列表中的字符串进行排序

    千次阅读 2020-12-09 10:50:59
    ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符...

    主要用到ord函数。

    什么是ord函数:

    ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

    返回值

    返回值是对应的十进制整数。

    >>>ord('a')
    97
    >>> ord('b')
    98
    >>> ord('c')
    99

    列表中的字符串进行排序
     

    one_list = ['ab','cd','bc','zs','de','aa','cc','bb']
    new_list = sorted(one_list,key=lambda keys:[ord(i) for i in keys],reverse=False)
    print(new_list)  # 输出['aa', 'ab', 'bb', 'bc', 'cc', 'cd', 'de', 'zs']

     

    展开全文
  • 主要介绍了字符串List按照长度排序python)的实现方法啊,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 我们经常遇到一些文件名是字符加上数字的组合,这个时候直接用 sort() 或者 sorted() 就无法按照需求进行排序。 比如: name_list = ['img_496.jpg', 'img_414.jpg', 'img_106.jpg', 'img_330.jpg', 'img_507.jpg'] ...

    我们经常遇到一些文件名是字符加上数字的组合,这个时候直接用 sort() 或者 sorted() 就无法按照需求进行排序。
    比如:

    name_list = ['img_496.jpg', 'img_414.jpg', 'img_106.jpg', 'img_330.jpg', 'img_507.jpg']
    

    这里我们可以引入正则表达式,来帮助排序:

    import re
    new = sorted(name_list,key = lambda i:int(re.findall(r'\d+',i)[0]))
    print(new)
    
    ['img_106.jpg', 'img_330.jpg', 'img_414.jpg', 'img_496.jpg', 'img_507.jpg']
    

    关于正则表达式,不清楚的可以查阅:

    搞清楚 Python 正则表达式,简单易懂看这一篇就够了

    展开全文
  • Python关于列表字符串类型数字排序问题 在list中字符串类型的数字使用sort排序会错误 如 a=['2121212.121','45454.4545','123213213213','2321321312','323213','3232324','32132144214.56','2421551'] a.sort...

    Python关于列表中字符串类型数字排序问题

    在list中字符串类型的数字使用sort排序会错误

    a=['2121212.121','45454.4545','123213213213','2321321312','323213','3232324','32132144214.56','2421551']
    a.sort(reverse=True)
    print(a)
    

    输出结果为发现排序错误,此时需要把列表里的数字变为数字类型,而不是字符串
    在这里插入图片描述

    a=['2121212.121','45454.4545','123213213213','2321321312','323213','3232324','32132144214.56','2421551']
    #使用一个for循环遍历a,然后把每个元素进行转换为float类型,然后在重新覆盖a的元素
    for i in range(len(a)):
            b=float(a[i])
            a[i]=round(b,2)
    a.sort(reverse=False)
    print(a)
    

    结果排序正确
    在这里插入图片描述

    展开全文
  • 主要介绍了python统计字符串中字母出现次数代码实例,文中通过示例代码介绍的非常详细,大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python对含有数字的字符串进行排序

    千次阅读 2020-04-02 14:58:44
    def _sort(list,b,a): ''' ... b:数字前一个字符 a;数字后一个字符 ''' list.sort(key = lambda x:int(x.split(a)[0].split(b)[1])) return list x = ["py1.py", "py2.py", "py100.py", "py2...
  • Python3 list 排序字符串排序

    万次阅读 2018-12-18 11:37:45
    Python3 文件的每行字符按长度排序 一、 列表的sort排序函数 函数原型:  list.sort(key=None,reverse=False) 函数功能: 列表进行排序,完成排序后,原列表变为有序列表。默认情况(不传入任何参数时...
  • 由于本身初识Python,很多Python知识并不了解,所以这里主要使用了回溯法求其子字符串,然后通过Python列表的sort()方法将其按老师要求排序。 str1 = input("请输入一个单词:") res = [] s1 = "" def outlist(s, ...
  • python list字符串元素排序

    千次阅读 2017-06-30 16:13:39
    需求:list中的字符串按照首字母排序 实现:list1 = ['as','jj','bk'] for line in list1: temp=line.strip().split(',') temp.sort() print temp输出 ['as','bk','jj']注意事项: sort()看起来很简单,但是...
  • s=["q","abc","tx","zzui","aa11","dd23","aasd"] print s.sort(key=lambda x:len(x)) ... s=['e', 'ey', 'eyj', 'eyjuo', '
  • python对字符串进行长度排序,当长度相同是进行字典序排序 方法一:可以分为两次,先进行字典序排序,再进行长度排序。 a=['bcdefg','abcdef','ija','abc','abcd'] a.sort() a.sort(key=len) print(a) >>>...
  • python对字符串的操作

    千次阅读 2019-08-20 09:40:16
    字符串操作,在编程中...字符串python中是一种常见的基本数据结构,存放在文字常量区。在日常使用中常见的增删改查操作具体如下: (1)单一类型 str1="adhjafd" str2=str1+'er' ##增 adhjafder str3="adh" ##删...
  • Python字符串排序的两种方法详解

    万次阅读 2019-10-25 10:45:22
    Python中没有直接对字符串排序的方法,下面介绍两种方法对字符串进行排序。 第一种方法,将字符串转换成数组,对数组排序后,再转换成字符串。代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- def main()...
  • class SortNum(object): def __init__(self, lst): self.lst = lst @staticmethod def convert2int(s): try: return int(s) except ValueError: return s ... def str2int(self, v_str): ...
  • 字符串变成单个字符列表 利用python自带的 list() 函数就可以实现(注意该函数有返回值)。 示例 代码: a = "abdbrg4g" a = list(a) print(a) 将会得到如下图所示的输出: 排序 再利用python自带的 sorted() ...
  • Java程序对字符串列表进行排序

    千次阅读 2020-09-12 11:46:12
    两个字符串相等 Java程序对字符串列表进行排序 (Java Program to Sort List of Strings) class StringsSortingExample { public static void main(String...s) { int n,i,j; String str[]={"you","are","so",...
  • 试图弄清楚如何按值字典列表进行排序,其中值以“自定义地图”列表中的字符串开头.例如,这里是要排序的数据:"buckets": [{"doc_count": 23,"key": "Major League Stuff"}...
  • python list实现按照字符串内数字排序

    千次阅读 2020-09-29 15:31:21
    listing.sort(key=lambda x: int(re.findall(r"\d+",x)[0]) )
  • sort()是列表的一个排序方法,直接修改原列表,没有返回值。 sorted()使用范围更广,不局限于列表,能接受所有迭代器,返回排好序的新列表。 使用方法: list.sort(*, key=None, reverse=None) sorted(iterable...
  • Python字符串排序

    千次阅读 2018-04-28 13:44:00
    看了西红柿的博客,此文纯搬运,方便自己查询用。 ... 1、python中的字符串类型是不允许直接修改元素的。必须先把要排序字符串放在容器里,如list。...所以在python对字符串排序需要好几行代码: s="strin...
  • 代码如下: ...#对字符串列表排序,不区分大小写 print '--DSU方法' def case_insensitive_sort(sort_strlist): auxiliary_list = [(x.lower(),x) for x in sort_strlist] #decorate auxiliary_lis
  • python字符串列表

    2018-03-28 23:06:13
    一.字符串 1.字符串的创建 单引号或者双引号赋值给一个变量即可 ...del s2 ###删除s2在内存空间的数据,打印已经删除的字符串会报错,找不到的这个字符串了 3.占位符 4.求圆的面积,先导入math
  • 本篇文章会用一行代码,让文本中出现的数字序号可以按照数字顺序进行排序
  • Python中创建按字母顺序排序列表的最佳方法是什么?
  • 然后排序,结果就不是1,10,11,12,2,20,21这种了 list.sort(key = lambda x: (int(x.split('_')[0][1:]), int(x.split('_')[1]), int(x.split('_')[2]))) 解释 用lamdba函数指定排序的依据,如果需要多个关键字作为...
  • Python 字符串列表去重

    千次阅读 2019-06-26 22:42:00
    最近面试中出现频率比较高的字符串列表的去重pstr = 'abcadcf'# 字符串去重# 1、使用集合 --没有保持原来的顺序 print(set(pstr)) # 2、使用字典 -- 没有保持原来的顺序 print({}.fromkeys(pstr).keys())...
  • python二维列表按照某列(字符串列)排序;忽略大小写+区分大小写 使用list自带的sorted 方法, data = sorted(data, key=lambda x:x[1]), x:x[1]代表data的第二列元素;给字符串排序分区分大小写,忽略大小写两种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,127
精华内容 32,450
关键字:

python对字符串列表排序

python 订阅