Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Python按另一个列表对子列表进行分组

使用Python按另一个列表对子列表进行分组

作者头像
很酷的站长
发布于 2023-08-11 07:24:14
发布于 2023-08-11 07:24:14
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

在 Python 中,我们可以使用各种方法按另一个列表对子列表进行分组,例如使用字典和使用 itertools.groupby() 函数,使用嵌套列表推导。在分析大型数据集和数据分类时,按另一个列表对子列表进行分组非常有用。它还用于文本分析自然语言处理。在本文中,我们将探讨在 Python 中按另一个列表对子列表进行分组的不同方法,并了解它们的实现。

方法1:使用字典

字典可以以非常简单的方式用于按 Python 中的另一个列表对子列表进行分组。让我们借助示例了解字典在另一个列表上按另一个列表分组子列表的用法。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list_name.append(element)

在这里,元素是要添加到列表末尾的元素。追加方法将此元素放在列表的末尾。

在下面的示例中,我们定义了一个函数group_sublists,它采用两个参数:子列表(子列表的列表)和grouping_list(确定分组顺序的列表)。在函数内部,我们创建空字典组来存储按键分组的子列表。我们迭代子列表列表中的每个子列表。假设每个子列表的第一个元素是键,我们提取它并检查它是否存在于组字典中。如果是这样,我们将当前子列表附加到该键的现有子列表列表中。否则,我们将在组字典中创建一个新的键值对,并将键和当前子列表作为值。最后,我们返回一个列表推导式,该推导式按grouping_list指定的顺序检索分组的子列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def group_sublists(sublists, grouping_list):     groups = {}     for sublist in sublists:         key = sublist[0]  # Assuming the first element of each sublist is the key         if key in groups:             groups[key].append(sublist)         else:             groups[key] = [sublist]     return [groups[key] for key in grouping_list] # Example usage sublists = [[1, 'apple'], [2, 'banana'], [1, 'orange'], [2, 'grape']] grouping_list = [1, 2] result = group_sublists(sublists, grouping_list) print(result)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[[1, 'apple'], [1, 'orange']], [[2, 'banana'], [2, 'grape']]]

方法2:使用itertools.groupby()函数

Python 的 itertools 模块提供了一个名为 groupby() 的方便函数,可用于根据关键函数对元素进行分组。让我们借助示例来理解这一点。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list_name.append(element)

在这里,append() 函数是一个列表方法,用于将元素添加到list_name的末尾。它通过将指定的元素添加为新项来修改原始列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
itertools.groupby(iterable, key=None)

在这里,可迭代是输入可迭代对象,它可以是要分组的任何序列,key=None 是一个可选参数,可以是一个可以用作分组键的函数。如果未提供键功能,则元素本身将用作分组的键。

在下面的示例中,我们首先根据键对子列表进行排序(假设它是第一个元素)。然后,我们创建一个名为 result 的空列表来存储分组的子列表。接下来,我们迭代由 itertools.groupby() 生成的组。groupby() 函数采用两个参数:可迭代函数(在本例中为子列表)和键函数(从每个子列表中提取键的 lambda 函数)。它返回键对和包含分组子列表的迭代器。在循环中,我们检查grouping_list中是否存在密钥。如果是这样,我们使用 list(group) 将迭代器转换为列表并将其附加到结果列表中。最后,我们返回包含分组子列表的结果列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import itertools def group_sublists(sublists, grouping_list):     sublists.sort(key=lambda x: x[0])  # Sort the sublists based on the key     result = []     for key, group in itertools.groupby(sublists, lambda x: x[0]):         if key in grouping_list:             result.append(list(group))     return result # Example usage sublists = [[1, 'apple'], [2, 'banana'], [1, 'orange'], [2, 'grape']] grouping_list = [1, 2] result = group_sublists(sublists, grouping_list) print(result)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[[1, 'apple'], [1, 'orange']], [[2, 'banana'], [2, 'grape']]]

方法3:使用嵌套列表推导

我们可以使用 Python 编写嵌套列表推导,它可用于按另一个列表对子列表进行分组。让我们看一个例子,看看我们如何实现这一点。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[expression for item in list if condition]

此处,语法由方括号组成,方括号将表达式括起来,后跟一个循环访问列表的 for 循环。也可以在表达式末尾添加任何 if 条件以过滤掉某些元素。

在下面的示例中,我们定义了函数 group_sublists,它将子列表和grouping_list作为参数。我们使用嵌套列表推导来迭代grouping_list中的每个键。对于每个键,我们遍历子列表并仅过滤掉具有匹配键的子列表(假设它是第一个元素)。然后将这些筛选的子列表收集到一个新列表中,该列表表示该键的分组子列表。结果是一个列表列表,其中每个子列表都包含特定键的分组子列表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def group_sublists(sublists, grouping_list):     return [         [sublist for sublist in sublists if sublist[0] == key]         for key in grouping_list     ] # Example usage sublists = [[1, 'apple'], [2, 'banana'], [1, 'orange'], [2, 'grape']] grouping_list = [1, 2] result = group_sublists(sublists, grouping_list) print(result)

输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[[1, 'apple'], [1, 'orange']], [[2, 'banana'], [2, 'grape']]]

结论

在本文中,我们讨论了如何在 Python 中按另一个列表对子列表进行分组。我们讨论了三种方法:使用字典和利用 itertools.groupby() 函数,以及使用嵌套列表推导。每种方法都有其优点,并且可能更适合,具体取决于程序的特定要求。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
神经网络主要类型及其应用
目前深度学习中的神经网络种类繁多,用途各异。由于这个分支在指数增长,跟踪神经网络的不同拓扑有助于更深刻的理解。在本文中,我们将展示神经网络中最常用的拓扑结构。
McGL
2020/09/02
2.4K0
干货 | 史上最好记的神经网络结构速记表(上)
本文提供了神经网络结构速查表,盘点了神经网络的大量框架,并绘制了直观示意图进行说明,是人手必备的神经网络学习小抄。 新的神经网络结构不断涌现,我们很难一一掌握。哪怕一开始只是记住所有的简称( DCIG
AI科技评论
2018/03/14
1.4K0
干货 | 史上最好记的神经网络结构速记表(上)
史上最好记的神经网络结构速记表(上)
翻译 / 陈俊雅 校对 / 李傲 整理 / 雷锋字幕组 本文提供了神经网络结构速查表,盘点了神经网络的大量框架,并绘制了直观示意图进行说明,是人手必备的神经网络学习小抄。 新的神经网络结构不断涌现,我们很难一一掌握。哪怕一开始只是记住所有的简称( DCIGN,BiLSTM,DCGAN ),也会让同学们吃不消。 所以我决定写篇文章归纳归纳,各种神经网络结构。它们大部分都是神经网络,也有一些是完全不同的结构。虽然所有结构说起来都是新颖而独特的,但当我画出结点的结构图时……它们之间的内在联系显得更有意思。 总表
AI研习社
2018/03/19
9970
史上最好记的神经网络结构速记表(上)
【深度学习】详细的神经网络架构图
将这些架构绘制成节点图的一个问题:它并没有真正展示这些架构的工作方式。比如说,变自编码器(VAE)可能看起来和自编码器(AE)一样,但其训练过程却相当不同。训练好的网络的使用案例之间的差别甚至更大,因为 VAE 是生成器(generator),你可以在其中插入噪声来得到新样本;而 AE 只是简单地将它们的输入映射到其所「记得」的最接近的训练样本。所以必须强调:这篇概览中的不同节点结构并不能反映出这些架构的内在工作方式。 列出一份完整的列表实际上是不可能的,因为新架构一直在不断出现。即使已经发表了,我们
机器人网
2018/04/12
1.5K0
【深度学习】详细的神经网络架构图
多图 | 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了
作者 | FJODOR VAN VEEN 编译 | AI100(ID:rgznai100) 在深度学习十分火热的今天,不时会涌现出各种新型的人工神经网络,想要实时了解这些新型神经网络的架构还真是不容易。光是知道各式各样的神经网络模型缩写(如:DCIGN、BiLSTM、DCGAN……还有哪些?),就已经让人招架不住了。 因此,这里整理出一份清单来梳理所有这些架构。其中大部分是人工神经网络,也有一些完全不同的怪物。尽管所有这些架构都各不相同、功能独特,当我在画它们的节点图时……其中潜在的关系开始逐渐清晰起来
AI科技大本营
2018/04/27
3K0
多图 | 从神经元到CNN、RNN、GAN…神经网络看本文绝对够了
【中秋赏阅】美丽的神经网络:13种细胞构筑的深度学习世界
【新智元导读】人是视觉动物,因此要了解神经网络,没有什么比用图将它们的形象画出来更加简单易懂了。本文囊括 26 种架构,虽然不都是神经网络,但却覆盖了几乎所有常用的模型。直观地看到这些架构有助于你更好地了解它们的数学含义。当然,本文收录的神经网络并不完全,并且也并不都是神经网络。但它将成为你系统掌握神经网络的好文章。 新的神经网络架构随时随地都在出现,要时刻保持最新还有点难度。要把所有这些缩略语指代的网络(DCIGN,IiLSTM,DCGAN,知道吗?)都弄清,一开始估计还无从下手。 因此,我决定弄一个“作
新智元
2018/03/23
8170
【干货】这8种神经网络结构,你掌握了几个?
【导读】近日,James Le撰写了一篇博文,全面阐述了神经网络中经典的八种神经网络结构。包括感知器、卷积神经网络、循环神经网络、LSTM、Hopfield网络、玻尔兹曼机网络、深度信念网络、深度自编
WZEARW
2018/04/12
2.1K0
【干货】这8种神经网络结构,你掌握了几个?
博客 | 一文看懂深度学习发展史和常见26个模型
本文首先从4个方面(张量、生成模型、序列学习、深度强化学习)追踪深度学习几十年的发展史,然后再介绍主流的26个深度学习模型。
AI研习社
2019/05/13
5430
博客 | 一文看懂深度学习发展史和常见26个模型
机器学习研究人员需要了解的8个神经网络架构(下)
上文讲述了机器学习的功能和神经网络的概念,以及简要介绍了感知器和卷积神经网络,接下来继续介绍另外6种神经网络架构。
用户3578099
2019/08/16
5450
神经网络简史
追根溯源,神经网络诞生于人类对于人脑和智能的追问。而这个追问经历了旷远蒙昧的精神至上学说,直到 19 世纪 20 年代。
用户9624935
2022/04/02
1.6K0
神经网络简史
上手!深度学习最常见的26个模型练习项目汇总
今天更新关于常见深度学习模型适合练手的项目。这些项目大部分是我之前整理的,基本上都看过,大概俩特点:代码不长,一般50-200行代码,建议先看懂然后再实现和优化,我看基本上所有的实现都有明显可优化的地方;五脏俱全,虽然代码不长,但是该有的功能都有,该包含的部分也基本都有。所以很适合练手,而且实现后还可保存好,以后很多任务可能就会用到。
AI科技大本营
2019/05/17
1.6K0
上手!深度学习最常见的26个模型练习项目汇总
你不得不了解的8种神经网络结构!
机器学习已经在各个行业得到了大规模的广泛应用,并为提升业务流程的效率、提高生产率做出了极大的贡献。目前机器学习主要在以下方面应用: 模式识别:实际场景中的目标、包括人脸、表情、语音识别等等; 异常检测:例如信用卡交易的异常检测、传感器异常数据模式检测和异常行为检测等; 预测问题:预测股票或者汇率、或者预测消费者喜欢的电影、音乐等。 神经网络是一类机器学习算法和模型的统称,也是目前机器学习发展最快的一个领域。神经网络的架构主要分为三大类——前馈、循环和对称链接网络。神经网络具有如下三个特征使它成为了机器学习中
朱晓霞
2018/04/18
8180
你不得不了解的8种神经网络结构!
一文看懂深度学习发展史和常见26个模型
作者简介:沧笙踏歌,硕士毕业于北京大学,目前计算机科学与技术博士在读,主要研究自然语言处理和对话系统,擅长使用深度学习和强化学习解决自然语言处理问题。读博前在公司带过NLP算法团队。
AI科技大本营
2019/05/06
9570
一文看懂深度学习发展史和常见26个模型
十大深度学习算法的原理解析
深度学习是机器学习的子集,它基于人工神经网络。学习过程之所以是深度性的,是因为人工神经网络的结构由多个输入、输出和隐藏层构成。每个层包含的单元可将输入数据转换为信息,供下一层用于特定的预测任务。得益于这种结构,机器可以通过自身的数据处理进行学习。
算法进阶
2023/08/28
8200
十大深度学习算法的原理解析
入门 | 机器学习研究者必知的八个神经网络架构
选自Medium 作者:James Le 机器之心编译 参与:白悦、黄小天 本文简述了机器学习核心结构的历史发展,并总结了研究者需要熟知的 8 个神经网络架构。 我们为什么需要「机器学习」? 机器学习对于那些我们直接编程太过复杂的任务来说是必需的。有些任务很复杂,以至于人类不可能解决任务中所有的细节并精确地编程。所以,我们向机器学习算法提供大量的数据,让算法通过探索数据并找到一个可以实现程序员目的的模型来解决这个问题。 我们来看两个例子: 写一个程序去识别复杂场景中照明条件下新视角的三维物体是很困难的。我们
机器之心
2018/05/10
7740
干货 | 转型人工智能,你需要掌握的八大神经网络
翻译 | AI科技大本营 参与 | 林椿眄 编辑 | Donna 为什么我们需要机器学习? 机器学习可以解决人类不能直接用编程来应对的复杂难题,因此,我们喂给机器学习算法大量的数据,以期得到想要的答案。 我们来看看这两个例子: 编写解决问题的程序是非常困难的,比如在杂乱的场景中,在新的照明条件下从新的角度来识别三维物体。我们不知道要如何通过代码来解决这个问题,因为这个识别过程在大脑中完成情况对我们来说还是未解之谜。 即使我们知道该怎么做,要编写的程序可能会非常复杂。 再比如,编写一个程序来预测信用卡交易
AI科技大本营
2018/04/26
8750
干货 | 转型人工智能,你需要掌握的八大神经网络
最值得关注的10大深度学习算法
下图展示了传统机器学习算法与深度学习技术在数据量方面的性能比较。从图表中可以明显看出,随着数据量的增加,深度学习算法的性能也随之提升。
皮大大
2024/07/19
4390
机器学习常用神经网络架构和原理
一、为什么需要机器学习? 有些任务直接编码较为复杂,我们不能处理所有的细微之处和简单编码,因此,机器学习很有必要。相反,我们向机器学习算法提供大量数据,让算法不断探索数据并构建模型来解决问题。比如:在新的杂乱照明场景内,从新的角度识别三维物体;编写一个计算信用卡交易诈骗概率的程序。 机器学习方法如下:它没有为每个特定的任务编写相应的程序,而是收集大量事例,为给定输入指定正确输出。算法利用这些事例产生程序。该程序与手写程序不同,可能包含数百万的数据量,也适用于新事例以及训练过的数据。若数据改变,程序在新数据上
两只橙
2018/04/27
1.4K0
机器学习常用神经网络架构和原理
Deep Learning for Computer Vision: A Brief Review
在过去的几年里,深度学习方法在几个领域的表现都超过了以往的机器学习技术,其中最突出的一个例子就是计算机视觉。这篇综述文章简要介绍了计算机视觉问题中最重要的一些深度学习方案,即卷积神经网络、深度玻尔兹曼机和深度信念网络,以及叠加去噪自编码器。简要介绍了它们的历史、结构、优点和局限性,然后介绍了它们在各种计算机视觉任务中的应用,如对象检测、人脸识别、动作和活动识别以及人体姿态估计。最后,简要介绍了未来计算机视觉问题深度学习方案的设计方向和面临的挑战。
狼啸风云
2019/12/10
1.6K0
Deep Learning for Computer Vision: A Brief Review
【深度学习】深度学习概述:从感知机到深度网络
近些年来,人工智能领域又活跃起来,除了传统了学术圈外,Google、Microsoft、facebook等工业界优秀企业也纷纷成立相关研究团队,并取得了很多令人瞩目的成果。这要归功于社交网络用户产生的大量数据,这些数据大都是原始数据,需要被进一步分析处理;还要归功于廉价而又强大的计算资源的出现,比如GPGPU的快速发展。   除去这些因素,AI尤其是机器学习领域出现的一股新潮流很大程度上推动了这次复兴——深度学习。本文中我将介绍深度学习背后的关键概念及算法,从最简单的元素开始并以此为基础进行下一步构建。  
陆勤_数据人网
2018/02/27
8770
【深度学习】深度学习概述:从感知机到深度网络
推荐阅读
相关推荐
神经网络主要类型及其应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验