百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

python中的集合 python中的集合有哪些特点

liuian 2024-12-28 14:13 46 浏览

python中的集合类型主要包括:列表(list)、元组(tuple)和集合(set),本节主要对它们的特性及元素操作进行详细的讲解。

## 列表(list)

列表与其它语言的数组非常相似,是对象的有序集合,列表不用提前声明,也不用提前固定大小,创建时,在方括号中列出以逗号分隔的元素即可。如:x = [1, 2, 3]。列表中的元素可以是任意的python对象,如:x = [1, "two", [1, 2, 3]]。空列表不包含任何元素:[]。

列表元素的索引,0指向第一个元素,1指向第二个元素,依此类推。索引可以为负数,-1指向最后一个元素,-2指向倒数第二个元素,依此类推。通过索引可对列表进行切片操作(slice),也就是一次提取或赋值一整个子列表。如:list[start:end],提取从start(含)到end(不含)之间的所有元素放入一个新列表中。如果end在start之前,则返回空列表。切片时还可以省了start或者end,省略start则表示从从头开始,如:list[:end],省略end则表示到最后一个,如:list[start:]。如果start和end全部省略了,则会基于原列表从头到尾创建一个新列表,如:list[:]。

除提取列表元素外,还可以使用索引修改列表,如:x[1] = "first",也可基于切片同时修改多个元素,如:list[start:end] = another_list,会将list中从start到end之间所有的元素用another_list的元素替换掉,another_list可多于或少于切片中的元素,list的长度自动调整。如在列表末尾追加元素:x[len(x):] = [1, 2, 3],在列表开头插入元素:x[:0] = [1, 2, 3]等。如果another_list为空列表,则可实现删除功能,如:x[0:-1] = []。

可使用append方法添加元素,但如果参数是列表时,则被作为一个元素添加,如:x.append([4, 5, 6])。extend方法则能够将列表追加到另一个列表之后,如:x.extend([4, 5, 6])。insert方法在列表指定索引位置插入新元素,如:x.insert(0, "start")在x的开始位置插入"start"。insert的功能可通过切片实现,如:x.insert(n, item) 同 x[n:n] = [item]。使用del删除列表元素,如:del x[1] 同 x[n:n+1] = [],del x[m:n] 同 x[m:n] = []。remove方法在列表中查找给定值的第一个实例,然后从列表中删除。reverse方法可高效的将列表反转,如:x.reverse()。

可用sort方法对列表元素进行排序,如:x.sort(),sort方法排序时会修改原列表,如果不希望修改原始列表,可使用sorted函数或者先复制原列表后进行排序。排序时列表中的元素必须是可比较类型,如数字和字符串就无法进行比较,从而引发异常。可通过sort的key参数传入自定义函数实现自定义排序,函数定义和函数式编程后面都会有详细介绍,敬请期待,如:x.sort(key=self_defiend_func)。当然也可使用匿名函数,如:x.sort(key=lambda x : len(x)),实例中指定按元素长度进行排序。可以通过指定reverse参数实现升序或者逆序排序。

其他类别常用的操作还有:in测试判断元素是否在列表中,not in相反;+将两个现有的列表拼接起来创建新的列表;*用于生成指定大小的列表;min查找列表中最小元素;max查找列表中最大元素;index查找指定元素在列表中的索引;count对匹配项进行计数。

上面提到可用x[:]复制列表,也可用:x + [] 或 x * 1实现,但这三者均为浅复制,也就是说当列表元素本身为列表等引用对象时,复制后的类别元素和原始的列表元素将指向同一个对象,当修改元素指向的对象时,原始列表和复制后的列表均被修改。可通过copy模块的deepcopy来实现深复制:

## 元组(tuple)

元组与列表非常相似,但其创建之后便不能修改,元组的创建由圆括号完成,如:x = (1, 2, 3)。元组创建完成后就可用上面介绍的大部分方法对其进行操作了,主要区别为元组不能像列表一样进行修改,如:x[0] = 2。单个元素的元组应该加上逗号,如:(0,)。当元组出现在赋值操作符的左侧时,元组中的变量会被依次赋予右侧的元素值,如:(x, y, z) = (1, 2, 3),还可以简写为:x, y, z = 1, 2, 3。交换两个变量的值:x, y = y, x。另外,带*的元素接收任意数量的未匹配元素,如:x, y, *z = 1, 2, 3, 4,此时z的值为:[3, 4]。带星号的元素会把多余的所有数据项接收为列表,如没有多余的元素,则为空列表:[]。

通过list函数,元组可转换为列表。类似地,使用tuple函数转换为元组。list也可将字符串拆分为字符列表,如:list("hello")。

## 集合(set)

set是一组对象的无序集,主要关心对象是否属于集合,是否唯一。集合元素必须是不可变的、可散列的或者hash的,所以整数、浮点数、字符串、元组可以作为集合成员,而列表、字典和集合本身则不能,可以通过frozenset将集合冻住之后作为集合元素:


"橙汁数据"(微信公众号),长期关注大数据的收集处理与分析,深度学习与人工智能应用,如有大数据或智能应用相关业务,欢迎关注"橙汁数据"(微信公众号)洽谈咨询;

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...