首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对包含带有SI前缀的数字的字符串列表进行排序

,可以按照以下步骤进行:

  1. 提取字符串列表中的数字部分,并将其转换为浮点数。可以使用正则表达式或字符串处理函数来实现。
  2. 根据数字的大小进行排序。可以使用内置的排序函数或自定义排序算法来实现。
  3. 对于带有SI前缀的数字,可以根据其对应的数量级进行排序。SI前缀是国际单位制中用于表示十进制倍数的前缀,例如"k"表示千,"M"表示百万,"G"表示十亿等。
  4. 根据排序结果,重新构建排序后的字符串列表。

以下是一个示例代码,演示如何对包含带有SI前缀的数字的字符串列表进行排序:

代码语言:txt
复制
import re

def convert_to_float(string):
    si_prefixes = {
        'k': 1e3,
        'M': 1e6,
        'G': 1e9,
        # 添加其他SI前缀及其对应的数量级
    }
    
    # 提取数字部分
    number = float(re.findall(r'\d+\.?\d*', string)[0])
    
    # 提取SI前缀
    si_prefix = re.findall(r'[a-zA-Z]+', string)
    if si_prefix:
        si_prefix = si_prefix[0]
        if si_prefix in si_prefixes:
            number *= si_prefixes[si_prefix]
    
    return number

def sort_strings_with_si_prefix(strings):
    # 转换为浮点数并排序
    sorted_numbers = sorted(strings, key=convert_to_float)
    
    # 重新构建排序后的字符串列表
    sorted_strings = [str(number) for number in sorted_numbers]
    
    return sorted_strings

# 示例输入
strings = ['1.5k', '2M', '500', '10G', '100']

# 对字符串列表进行排序
sorted_strings = sort_strings_with_si_prefix(strings)

# 输出排序结果
print(sorted_strings)

输出结果为:['100', '500', '1.5k', '2M', '10G']

在这个示例中,我们首先定义了一个convert_to_float函数,用于将带有SI前缀的数字字符串转换为浮点数。然后,我们使用sorted函数对字符串列表进行排序,排序时使用convert_to_float函数作为排序的关键字。最后,我们重新构建排序后的字符串列表,并输出排序结果。

请注意,以上示例代码仅为演示目的,实际应用中可能需要根据具体需求进行适当修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

记录一个python里面很神奇操作,一个包含列表元组进行增量赋值

因为tuple不支持元素赋值,所以会抛出TypeError异常 c. 以上两个都不是 d. a和b都是 大多数人都会认为b是正确,本书作者也是这么认为,但是实际上呢?...却是选 **b** **不要疑惑,就是这样,既报错,又成功进行了修改** ## 首先讲一下增量赋值 ## 我们使用增量赋值运算符 **+=** 和 **\*=** 等增量赋值运算符时候(用 *...** 用列表举例 **a+=b**,使用 **\_\_add\_\_** 的话就像是使用了`a.extend(b)`,如果使用 **\_\_add\_\_** 的话,则是 `a = a+b`,前者是直接在原列表进行扩展...,而后者是先从原列表中取出值,在一个新列表进行扩展,然后再将新列表对象返回给变量,显然后者消耗要大些。...将t[2]值,存入TOS(Top Of Stack 栈顶端)。 2. 计算TOS +=b 。这一步可以完成,是因为TOS指向是一个列表(可变对象)。 3. t[2] = TOS 赋值。

1.4K20

linux tree命令,Linux tree命令实例详解

-f 打印每个文件完整路径前缀。 -i tree不会打印缩进线。 与-f选项一起使用时很有用。 -l 跟随目录符号链接,就像它们是目录一样。 避免了导致递归循环链接。...–timefmt format 打印(隐含-D)并根据使用strftime语法格式字符串格式化日期。 –noreport 忽略在tree列表末尾打印文件和目录报告。...-N 按原样打印不可打印字符,而不是默认胡萝卜表示法。 -r 按反向字母顺序输出进行排序。 -t 按上次修改时间而不是按字母顺序输出进行排序。 –dirsfirst 在文件之前列出目录。...提示:不要使用带有此选项ANSI行,并且在目录列表中不要给出多个目录。如果您想通过CSS样式表使用颜色,除了这个选项外,还可以使用-C选项强制输出颜色。...linuxidc@linuxidc:~$ tree -P ‘l*’ 使用大写“P”,您可以列出带有模式文件。 此模式示例显示仅包含以l开头目录树或包含以l开头文件目录。

3.1K30

SQL中使用符号

# 井号(35):有效标识符名称字符(不是第一个字符)。前后带有空格模算术运算符。对于嵌入式SQL,是ObjectScript宏预处理器指令前缀。例如,#include。...某些 SQL标准扩展第一个字符,包括字符串排序函数(%SQLUPPER)、聚合函数(%DLIST)和谓词条件(%startswith)。...用于谓词进行分组:WHERE NOT (Age12). (( )) 双圆括号:禁止缓存查询中文字替换。...在计数中,所有行(包括空值和重复项)进行计数。在GRANT和REVOKE中,所有基本权限、所有表或所有当前定义用户。 %MATCHES 模式字符串多字符通配符。乘法算术运算符。..., 逗号(44):列表分隔符,例如多个字段名称。在数据大小定义中:数字(精度,小数位数)。 – 连字符(减号)(45):减法算术运算符。

4.5K20

要飞起来了,Lucene 高阶查询技巧

字符串前缀查询 PrefixQuery 同关系数据库索引一样,得益于 FST 前缀共享属性,Lucene 也支持前缀查询。...图片 但是默认 PrefixQuery 不会对搜索结果进行排序,它对所有被搜索出来文档统一打分 1.0,在实现上可以让查询效率快很多,直接省去了收集所有文档进行排序过程。...图片 PrefixQuery 为什么要默认关闭排序呢?这是因为前缀查询能匹配到关键词可能会很多,merge 所有的文档列表排序将会是一个非常耗费性能过程。...字符串范围查询 TermRangeQuery 同数字范围查询类似,字符串也有范围查询,它是通过遍历关键词前缀树 FST 来实现,它会按照字典序将范围内所有词汇都列出来,然后 merge 所有关键词文档列表...除了 merge 文档列表排序代价之外,寻找到相似的词汇也需要一定代价。它需要搜寻整个关键词前缀树(FST),然后计算它们之间编辑距离,再挑选出「最大编辑距离」范围内词汇。

1.3K10

python 基础内置函数表及简单介绍

默认 dir() 机制不同类型对象有不同表现,因为它试图产生最相关信息,而不是完整信息: ·如果对象是模块对象,则列表包含模块属性名称。...·如果对象是一个类型或类对象,则该列表包含其属性名称,并递归地显示其基础属性。 ·否则,该列表包含对象属性名称,其类属性名称以及其类基类属性递归。...>>> hex(255) ‘0xff’ >>> hex(-42) ‘-0x2a’ 如果要将整数转换为带有前缀或不带前缀大写或小写十六进制字符串,可以使用以下任一方式: >>>...item 中返回一个新排序列表。...如果设置为 True,那么列表元素按照每个比较被颠倒顺序进行排序。 内置 sorted() 函数排序是稳定。如果确保不会更改比较相等元素相对顺序,则排序是稳定

1.3K20

Redis使用及源码剖析-17.Redis排序-2021-2-3

排序带有 BY 选项字符串值时使用 robj *cmpobj; } u; } redisSortObject; 2.sort key命令实现 sort key命令可以对一个包含数值..., 对数组进行数字排序排序数组项按 u.score 属性值从小到大排列, 如下图所示: d.遍历数组, 将各个数组项 obj 指针所指向列表项作为排序结果返回给客户端: 程序首先访问数组索引...c.根据obj指针指向集合元素, 对数组进行字符顺序排序排序数组项按 集合元素字符串顺序从小到大排列 d.遍历数组, 将各个数组项 obj 指针所指向集合元素作为排序结果返回给客户端。...4.by选项实现 默认情况下sort命令使用被排序进行排序,但是使用by选项后,可以让它按照其他字符串进行排序。...) // 我们元素字符串本身进行字典序排序 cmp = compareStringObjects(so1->obj,so2->obj); } }

82040

普林斯顿算法讲义(三)

我们考虑经典算法来解决围绕以下应用程序基本计算挑战: 5.1 字符串排序 包括 LSD 基数排序、MSD 基数排序和用于字符串数组进行排序三向基数快速排序。...算法:将字符串读入数组,使用三向基数快速排序它们进行排序,并计算它们频率计数。加速奖励:在三向分区期间计算计数。缺点:使用空间存储所有字符串。备选方案:TST。 均匀分布数据进行排序。...每个桶中元素进行插入排序(或者等效地,只对整个文件进行插入排序)。也就是说,一个级别进行 MSD 基数排序,然后切换到插入排序。[尝试原地进行?] 解决方案:平均总共需要 O(N) 时间。...给定一个包含 N 个不同长度十进制整数数组,描述如何在 O(N + K) 时间内它们进行排序,其中 K 是所有 N 个整数总位数。 美国国旗排序。...(原地键索引计数)给定一个包含 N 个介于 0 和 R-1 之间不同值数组,以线性时间和 O® 额外空间它们进行升序排列。导致(本质上)原地字符串排序

13210

Python 内建函数大全

默认 dir() 机制不同类型对象有不同表现,因为它试图产生最相关信息,而不是完整信息: 如果对象是模块对象,则列表包含模块属性名称。...如果对象是一个类型或类对象,则该列表包含其属性名称,并递归地显示其基础属性。 否则,该列表包含对象属性名称,其类属性名称以及其类基类属性递归。 结果列表按字母顺序排序。...一些例子: >>> hex(255) '0xff' >>> hex(-42) '-0x2a' 如果要将整数转换为带有前缀或不带前缀大写或小写十六进制字符串,可以使用以下任一方式: >>> '%#x'...item 中返回一个新排序列表。...如果设置为 True,那么列表元素按照每个比较被颠倒顺序进行排序。 内置 sorted() 函数排序是稳定。如果确保不会更改比较相等元素相对顺序,则排序是稳定

1.9K30

《Redis设计与实现》读书笔记(三十三) ——Redis排序命令sort实现

redis排序,都是通过快速排序算法来实现。快速排序算法见以前发过文章。 二、sort 命令实现 这个命令是包含数字进行排序。...4)根据u.score,整个数组进行排序。 5)遍历数组,将数组中每个obj对应列表元素作为返回值,返回给客户端。 排序前: ? 排序后: ?...三、alpha选项实现 命令是sort alpha,这是字符串进行排序方式。...通过使用by选项,sort命令可以指定某些字符串键,或某个哈希键所包含某些域来作为元素权重,一个键进行排序。...5)以u.score值为权重,对数组进行排序。 6)遍历排序数组,将结果返回给客户端。 ? 六、带有alpha选项by选项 当每个键对应结果是字符串,则需要带有alpha选项。

1.3K50

SQL命令 HAVING(一)

SQL命令 HAVING(一) 一组数据值指定一个或多个限制性条件SELECT子句。...默认情况下,此行选择不确定选择项列表聚合函数值。这是因为HAVING子句在SELECT-ITEM列表聚合函数之后进行解析。 在下面的示例中,只返回Age > 65行。...> 65 ORDER BY Age 将它与WHERE子句进行比较,WHERE子句选择返回哪些行,以及在select-item列表聚合函数中包含哪些行值: SELECT Name,Age,AVG(Age...: 选择项列表必须至少包含一个非聚合字段引用项。...如果两个值以完全相同方式排序,则它们相等。如果一个值在第二个值之后排序,则该值大于另一个值。字符串数据类型字段排序规则基于字段默认排序规则。默认情况下,它不区分大小写。

1.5K40

百度搜索常用api

ct=503316480&si=zbjingshui.com ct--此值一般是一串数字,可能是搜索请求验证码; si--在限定域名中搜索,比如想在本站内搜索可使用参数si=shangzhiwang.com...地址中都带有tn=内容,tn=后面的内容就是百度联盟账号。...如:Firefoxtn=suvion_dg(tn=suvion_4_dg),傲游tn=myie2dg,The Worldtn=suvion_4_pg,只要你使用了这些带有tn=搜索,只要点击了其中广告...rn 每页包含搜索结果数目。默认值为10 pn 搜索结果页码,从零开始计数。即pn = ${结果页码-1}*rn。 lm 搜索结果时间限制。...ct——此参数值一般是一串数字,估计应该是搜索请求验证码 si 和ct参数结合使用,比如在sina.com.cn中搜索“理想”,可用:http://www.baidu.com/s?

5K10

C语言之冒泡排序

,我再提供十道题供大家计算 给定一个整数数组,请进行升序排序。...给定一个浮点数数组,请进行降序排序。 给定一个字符串数组,请按字典序进行排序。 给定一个二维数组,请按每一行进行升序排序。...给定一个包含大写字母字符串数组,请按字母顺序进行排序。 给定一个包含小写字母字符串数组,请按字母顺序进行排序。...给定一个包含多个数字和字母字符串数组,请按字母顺序和数字大小进行排序。 给定一个包含多个字符串数组,其中一些字符串是其他字符串前缀,请按字典序和非前缀关系进行排序。...给定一个包含多个日期字符串数组,请按日期先后顺序进行排序。 给定一个包含多个邮箱地址数组,请按邮箱地址字母顺序进行排序

7210

文件系统特殊命令一览表

(启动文件系统) -sort sort the files in each directory before processing.在处理前每个目录中文件进行排序 -nolinks...#参数: /V 显示所有未包含指定字符串行 /C 仅显示包含字符串行数 /N 显示行号 /I 搜索字符串时忽略ignore大小写 /OFF...,文本或者由另一命令产生文本 注意:有中文乱码,chcp 进行更改活动代码页 基础示例: #1.字符串包含 find "string" d:\ #查找包含关键字某文件 find /N...忽略有不可打印字符文件 /OFF[LINE] 不跳过带有脱机属性集文件 /A:attr 指定有十六进位数字颜色属性请见 "color /?"...#查找包含了指定字符文本文件 findstr /m /i "hello" *.txt #/m只显示包含字符串文件名称 #6.

3.7K30

整理:C++中sprintf()函数使用详解

参数 str -- 这是指向一个字符数组指针,该数组存储了 C 字符串。 format -- 这是字符串包含了要被写入到字符串 str 文本。...它可以包含嵌入 format 标签,format 标签可被随后附加参数中指定值替换,并按需求进行格式化。...与 e、E 和 f 一起使用时,会强制输出包含一个小数点,即使后边没有数字时也会显示小数点。默认情况下,如果后边没有数字时候,不会显示显示小数点。...或者: unsigned short si = -1; sprintf(s, "%04X", si); sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。...或者: unsigned short si = -1; sprintf(s, "%04X", si); sprintf和printf还可以按8进制打印整数字符串,使用”%o”。

3K00

27 个问题,告诉你Python为什么这么设计

一个是性能:知道字符串是不可变,意味着我们可以在创建时为它分配空间,并且存储需求是固定不变。这也是元组和列表之间区别的原因之一。 另一个优点是,Python 中字符串被视为与数字一样“基本”。...使用列表作为键时进行复制。这没有用,因为作为可变对象列表可以包含自身引用,然后复制代码将进入无限循环。 允许列表作为键,但告诉用户不要修改它们。...因此, list.sort() 列表进行了适当排序。为了提醒您这一事实,它不会返回已排序列表。这样,当您需要排序副本,但也需要保留未排序版本时,就不会意外地覆盖列表。...如果要返回新列表,请使用内置 sorted() 函数。此函数从提供可迭代列表中创建新列表进行排序并返回。...另一个次要原因是冒号使带有语法突出显示编辑器更容易工作;他们可以寻找冒号来决定何时需要增加缩进,而不必程序文本进行更精细解析。 为什么Python在列表和元组末尾允许使用逗号?

6.6K11

用紧缩创建Wordlists

输出样本词表 当然,我们可以创建一个仅包含带有命令数字单词列表,而不仅仅是字母: ..../crunch 1 1 -p abc   将产生以下列表字符串排列 - 字符 第二个选项是,当我们将要根据不同创建列表words.For例中蓝色和红色可以bluered或redblue.We可以用命令实现这一目标...这将创建一个单词列表,它将包含一个特定lalpha字符集,最多包含20个单词,即[abcdefghijklmnopqrstuvwxyz]。 ....单词数量 前缀Wordlists 现在让我们说我们要创建一个单词列表,其中包含单词pentestlab,后跟3个随机字符。该命令将为: ....当然,可以提供用户可以使用各种选项和组合。当然,应用程序或带有单词列表系统可能会扼杀您当然可以锁定您关于帐户锁定政策,但如果您可以拥有自己自定义单词列表,它可能会有助于您获取访问权限。

80710

LeetCode 算法 | 最长公共前缀

我们从前往后枚举字符串每一列,先比较每个字符串相同列上字符(即不同字符串相同下标的字符)然后再进行下一列比较。...计算所得 lcpLeft 与 lcpRight 最长公共前缀就是原问题解 LCP(S_i\cdots S_j)LCP(Si⋯Sj)。 图 2....每一次将查找区间一分为二,然后丢弃一定不包含最终答案那一个。算法进行过程中一共会出现两种可能情况: S[1...mid] 不是所有串公共前缀。...否则,找到路径就不是所有字符串公共前缀 路径不包含被标记成某一个键值字符串结尾节点。 因为最长公共前缀不可能比某个字符串本身长 算法 最后问题就是如何找到字典树中满足上述所有要求最深节点。...最有效方法就是建立一颗包含字符串 [S_1 \ldots S_n][S1…Sn] 字典树。 然后在这颗树中匹配 q 前缀

81920
领券