按 Python 列表元素长度排序2024 年 8 月 29 日 | 阅读 6 分钟 目标是根据元素的长度对列表进行排序。另外,假设列表只包含一种类型的元素。 例如 说明: 输入列表是字符串列表:["Javatpoint", "Google", "Yahoo", "Microsoft"]。我们可以看到这些字符串的长度分别为 10、6、5 和 9。因此,根据元素长度排序后的列表将是 ["Yahoo", "Google", "Microsoft", "Javatpoint"],因为 "Yahoo" 的长度最短(5),其次是 "Google"(6),然后是 "Microsoft"(9),最后是 "Javatpoint"(10)。 说明: 输入列表是字符串列表的列表:[["Arun", "Rohan", "Vikesh"], ["Java", "Python"], ["Kavi"], ["Suraj", "Kiran"]]。在这里,我们需要根据子列表的长度对列表进行排序。每个子列表的长度分别为 3、2、1 和 2。因此,排序后的列表将是 [["Kavi"], ["Java", "Python"], ["Suraj", "Kiran"], ["Arun", "Rohan", "Vikesh"]]。 注意:在平局的情况下,当两个或多个元素的长度相同时,输入列表中出现的元素应首先出现在输出列表中。例如,在第二个示例中,子列表 ["Suraj", ["Kiran"]] 和 ["Arun", "Rohan", "Vikesh"] 的长度都为 2,但 ["Suraj", ["Kiran"]] 在输入列表中出现在 ["Arun", "Rohan", "Vikesh"] 之前,因此它在输出列表中也出现在其前面。有多种方法可以按元素长度对 Python 列表进行排序。可以自己编写算法来对列表进行排序。在 Python 中,我们有内置函数,如 sort() 和 sorted(),带有 key 参数,我们可以使用它来根据元素的长度对列表进行排序。 方法 1 - 使用 sort() 函数在此方法中,我们将使用 sort 函数对列表进行排序,key 参数将是 'len' 函数。 代码 输出 Input list 1 = ['Javatpoint', 'Google', 'Yahoo', 'Microsoft'] Input list 2 = [['Arun', 'Rohan', 'Vikesh'], ['Java', 'Python'], ['Kavi'], ['Suraj', 'Kiran']] Sorted list 1 = ['Yahoo', 'Google', 'Microsoft', 'Javatpoint'] Sorted list 2 = [['Kavi'], ['Java', 'Python'], ['Suraj', 'Kiran'], ['Arun', 'Rohan', 'Vikesh']] 说明 在上面的程序中,我们首先声明了两个列表:一个字符串列表和一个子列表列表。然后我们使用 sort 函数对列表进行排序,并将 len 函数作为 key 参数传递。 对于列表中的每个元素,len 函数返回其长度,列表根据元素的长度进行排序。最后,我们打印排序后的列表。 时间复杂度 = O(n): 排序算法的最坏时间复杂度为 O(n logn)。 空间复杂度 = O(1): 不需要额外的空间。列表在内部进行排序。 方法 2 - 使用 Sorted() 函数在此方法中,我们将使用 sorted 函数对列表进行排序。sorted 函数的第一个参数是列表本身,key 参数是 len 函数。 代码 输出 Input list 1 = ['Javatpoint', 'Google', 'Yahoo', 'Microsoft'] Input list 2 = [['Arun', 'Rohan', 'Vikesh'], ['Java', 'Python'], ['Kavi'], ['Suraj', 'Kiran']] Sorted list 1 = ['Yahoo', 'Google', 'Microsoft', 'Javatpoint'] Sorted list 2 = [['Kavi'], ['Java', 'Python'], ['Suraj', 'Kiran'], ['Arun', 'Rohan', 'Vikesh']] 说明 在上面的程序中,我们声明了两个列表:一个字符串列表和一个子列表列表。然后我们使用 sorted() 函数对列表进行排序。 sorted 函数的第一个参数是要排序的列表,key 参数是 len 函数。 对于列表中的每个元素,len 函数返回其长度,列表根据元素的长度进行排序。 方法 1 和方法 2 之间的唯一区别是,在方法 1 中,列表在内部进行排序。在方法 2 中,会创建新的已排序列表,而原始列表不受影响。 时间复杂度 = O(n): 排序算法的最坏时间复杂度为 O(n logn)。 空间复杂度 = O(n): 需要额外的空间来存储排序后的列表。排序后列表的大小取决于输入列表的长度,使得空间复杂度等于 O(n)。 方法 3 - 使用 numpy() 库在此方法中,我们将使用 numpy 库和 argsort 方法根据元素的长度对列表进行排序。 代码 输出 Input list = ['Javatpoint', 'Google', 'Yahoo', 'Microsoft'] Sorted list = ['Yahoo', 'Google', 'Microsoft', 'Javatpoint'] 说明 首先,我们将 numpy 库导入并别名为 np。我们使用 np.array() 函数将列表转换为 numpy 数组,并将结果存储在 my_array 中。然后我们使用 np.argsort() 对数组根据其元素长度进行排序,该函数返回将用于排序数组的索引。我们已将 list(map(len, my_array)) 作为排序键传入,它返回一个包含数组中字符串长度的列表。 然后我们使用切片语法 (my_array[indices]) 将排序索引应用于原始数组,并将结果存储在 sorted_array 中。最后,我们使用 list() 构造函数将排序后的数组转换回列表,并将其存储在 sorted_list 中。 最后,我们将结果打印到控制台。 时间复杂度 = O(n logn): np.argsort() 函数的最坏情况时间复杂度为 O(n logn),list(map(len, my_array) 操作的时间复杂度为 O(n),因为它只遍历数组的元素一次以计算其元素的长度。 空间复杂度 = O(n): 我们创建了一个大小为 n 的 numpy 数组。此外,list(map(len, my_array) 创建了一个大小为 n 的列表,使得程序的空间复杂度等于 O(n)。 注意:在此方法中,我们使用了 numpy 库并将列表转换为 numpy 数组,这并不是一种有效的对列表进行排序的方法。我们可以直接使用内置的 sort() 函数来对列表进行排序,并将 len 函数作为 key 参数传入,如前一种方法所示。下一个主题Python 中如何添加空格 |
在本教程中,我们将讨论在 Python 编程语言中使用 Eel 库,借助 HTML、CSS 和 JavaScript 为 Python 程序设计用户界面。我们将教程分为两个部分。第一部分是...
5 分钟阅读
在本教程中,我们编写程序来对 0、1 和 2 的列表进行排序。这里 0、1 和 2 的列表的含义是列表仅包含 0、1 和 2 形式的数据。例如,一个包含 11 个元素的数组...
5 分钟阅读
在本教程中,我们将编写 Python 程序来反转给定字符串中的元音。这是面试中经常问到的字符串问题。让我们了解一下问题陈述。问题陈述:我们给定一个字符串 s,只反转所有元音...
阅读 4 分钟
Python 的条件语句根据特定的布尔条件计算为真或假来执行各种计算或操作。在 Python 中,IF 语句处理条件语句。在本教程中,我们将学习如何使用 Python 中的条件语句。什么是 Python If 语句?要创建...
阅读 3 分钟
在 Python 中,分类变量是一种可以取有限数量可能值之一的变量。这些值通常是非数字的,用于表示分为类别或组的数据。分类变量也称为名义变量...
阅读 3 分钟
我们非常熟悉 Python 中可用的数据类型以及我们可以对它们执行的不同操作。我们知道,字符串是用引号 '' 表示的字符序列。它们是不可变的,这意味着它们一旦创建就无法更改...
阅读 4 分钟
创建图形用户界面 (GUI) 应用程序的奇妙之处在于,我们可以按照我们想要的方式自定义它们。有各种可供定制的功能,从文本字体到背景颜色。在接下来的教程中,我们将学习...
阅读 15 分钟
当我们谈论“自动化”时,人们通常会想到技术和失业的重大变化。关于自动化的好处远多于坏处。我很高兴自动化对于像我这样的专业拖延者和懒惰的怪人来说是一种福音。自动化基本上是这个过程...
14 分钟阅读
YouTube 被认为是观看次数最多的视频流媒体网站之一。YouTube 是一个于 2005 年推出的在线视频平台,提供各种各样的内容,包括教育视频、娱乐内容、电视剪辑、音乐和游戏视频等等。互联网连接缓慢可能会导致困难...
阅读25分钟
引言 时间序列数据无处不在,从股票价格和天气预报到心率监测和传感器数据。分析和提取有意义的时间序列数据见解可能是一项艰巨的任务,尤其是在处理大型复杂数据集时。一种简化和...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India