其实复合类型并不复杂,对于没有学习过python的朋友来说,完全不用担心。

复合类型是什么?

前面我们有讲述过简单数据类型,由于我在多个平台都有上传文章,所以这里就不贴出链接来了,烦请有需要的朋友自己去个人主页看一下,本章是基于简单数据类型的基础上来讲的。

复合类型就是一个包含有很多基本元素的数据类型。

做一个比较形象的比喻,比如我们经常喝的奶茶,里面会有很多的果粒、果冻、珍珠、奶精、水等其它原料,这些原料混合起来就成了一杯可口的奶茶。复合类型就像是一杯奶茶,它可能混合了整型、字符型、浮点型、布尔型甚至复合类型的一种数据类型。意思是,复合类型其实不是什么数据类型,它更像是一种数据的组织方式,一种数据存放的容器。

复合类型复杂吗?

其实复合类型在c/c++中是比较复杂的,他需要自己组织结构方式。但是在python中,这些问题就没有了,python的复合类型基本都封装好了,而我们日常所用的,基本就是基于这些封装好的函数对这些复合类型进行操作而已。

在python中,常用的复合类型其实就是元组、列表、字典、集合。其实字符串也算是复合类型的一种,但是字符串要将的内容比较多,后面会有专门的一章来讲述,所以本章且不讨论字符串类型。

先通过表格来看看复合类型的大概情况。

名称术语用途元组tuple用来存储一组固定的数据元素列表list用来存储一组可变的数据元素,可以对列表进行添加删除数据元素字典dict类似于列表,不同的是,这里面存储的都是键值对集合set类似于列表,不同的是,这里面不含有重复的元素

通过表格我们大致知道了每个复合类型都是做什么的,有了基础的印象后,说一些通用的运算,即上面的四个复合类型都有的操作。

复合类型的通用操作

复合类型基本都是多个元素组合成的一种数据容器,所以可想而知,围绕着复合类型的操作,基本都是针对数据元素的增删改查进行的。

复合类型一般都有一下通用操作:

  • 可用in判断某元素是否包含在集合内。
  • 可通过切片获取集合内的某些元素。不知道切片是什么的,请看简单数据类型的章节。
  • 都是可迭代对象,可以循环迭代集合内的每个元素。
  • 可用len()函数计算集合的元素数量,即集合长度。

上边基本上把python的复合类型的基本概念通俗的说出来了,但是远不只这么简单,这里基本上只是让我们知道了有这么个东西,但是涉及到具体的操作,又是另外一说了。

在开始进入正题之前,先提醒下朋友们,对于学习集合类型的时候,不要对集合类型有哪些函数死记硬背,这不是正确的打开姿势。正确的姿势是,我们只需要知道某个复合类型可以进行什么样的操作就行了,至于函数怎么写,需要传递什么参数,可以在实际需要的时候通过度娘或者编辑器的智能提示得出。但是得出后我们不要复制,而是自己敲,这样一来二去以后你就自然的熟记了所有函数,并且占用你脑内存的都是一些常用的函数。

好咯,现在开始上菜:

饭前小吃--tuple即元组

为什么说元组是饭前小吃呢,因为元组在python出现的地方特别多,尤其是传递参数的时候,但是往往我们都不会注意到,但是元组起到的作用并不是特别大。所以就像我们的饭前小吃,填填肚子,不顶饿。

元组是什么,元组就是一组被()包裹的数据类型,比如(元素1,元素2,元素3...)

元组是一组不可变的数据集合,什么是不可变呢?留到列表的时候来讲,现在我们就需要知道元素是一组固定元素的集合,即我们创建它的时候就应该声明好它里面有什么数据类型。

下面开始看代码和注释,请仔细看。

元组的初始化

# 元组的初始化# 直接用括号包裹元素,就是元组tuple_a = (1, 2, 3, 2)# 可以使用tuple函数生成元组,比如将将一个列表([1,2,3]就是列表)转成元组。tuple_b = tuple([1, 2, 3])# 即使元组只有一个元素,也需要用括号包裹,并且需要逗号,不可缺少。因为()不仅是元组符号也是运算符号,所以(1)并不是元组tuple_c = (1,)

元组基本上就上面两种初始化方法,需要注意的是当元组只含有一个元素的时候,必须包含','。

元组的运算

首先讲一下,元组是可以通过下标,比如下图:

如果我们想获取'b'元素,我们可以通过正向排序的[1]下标获取,也可以通过反向排序的[-3]下标获取。

那么接下来我们看看元组都可以做什么。

# 元组常用操作# 获取tuple_a中含有多少个2元素num = tuple_a.count(2)print("含有2元素的数量是:{0}".format(num))# 获取某个元素在元组中的位置,返回的是该元素在元组中第一次出现的位置index = tuple_a.index(2)print("第一次出现2的位置是:{0}".format(index))# 获取元组的长度length = len(tuple_a)print("tuple_a含有{0}个元素".format(length))# 通过下标获取1元素,分别是正序和反序,结果都是1即item_1等于item_2item_1 = tuple_a[0]item_2 = tuple_a[-4]print("item_1是{0},item_2是{1}".format(item_1, item_2))# 判断元组是否包含某个元素,用inif 2 in tuple_a: print(True)else: print(False)# 迭代元组for item in tuple_a: print(item)

运行结果:

含有2元素的数量是:2第一次出现2的位置是:1tuple_a含有4个元素item_1是1,item_2是1True1232

我们可以看到,常用的元组操作就上面这些,因为元组是不可变的,所以针对元组可进行的操作就比较少。

结合现代人的阅读方式,所以我将控制文章篇幅,其他复合类型将留到下一章来讲。

看完了这一章,你应该知道元组都可以进行什么操作了。

同时,如果对于我的文章感兴趣,对这系列教程感兴趣,可以关注我的公众号。

如果你有什么意见,想要反馈给我,可以加我。

复合类型_没有学不会的python--复合类型(1)--概念和元组相关推荐

  1. python print格式化输出类型_第一讲:Python print() 格式化输出

    由于书本上少了这个知识,所以总结如下,各同学看完后完成对应的试题: 格式符为真实值预留位置,并控制显示的格式.格式符可以包含有一个类型码,用以控制显示的类型,如下: %s    字符串 (采用str( ...

  2. 属于python语言中合法的二进制整数是_以下选项属于 Python 整数类型的是( )

    [单选题]3*1**3 表达式输出结果为________ [多选题]以下的布尔代数运算正确的是( ) [单选题]下列________不是Python的数据类型. [单选题]下列不是Python语言关键 ...

  3. python限制输入类型_《计算机二级Python语言程序设计考试》第3章:基本数据类型...

    考纲考点数字类型:整数类型.浮点数类型和复数类型 数字类型的运算:数值运算操作符.数值运算函数 字符串类型及格式化:索引.切片.基本的format()格式化方法 字符串类型的操作:字符串操作符.处理函 ...

  4. python判断对象类型_如何查看一个Python对象的类型

    怎么查看一个对象的类型 在Python中有两种类型判断函数,type()和isinstance(). 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判 ...

  5. c++ 不允许使用不完整的类型_Python入门高级教程--Python?变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

  6. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  7. java鸭子类型_语言设计中的鸭子类型风格

    在动态语言的世界里一直流传着一种叫做鸭子类型的风格,其来自谚语:"如果行鸭子一样走路,像鸭子一样呱呱叫,那它就是一只鸭子". 从鸭子类型,我们可以联想到它的推导,并不在乎类型的真正 ...

  8. resultset java 类型_关于JAVA中Resultset的类型

    JAVA中Resultset是一个类 而不是一个方法.记住啊. 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同 ...

  9. mysql 建复合索引_关于mysql建立索引 复合索引 索引类型

    这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问"hash和btree索引的差别",这非常难吗.仅仅 ...

最新文章

  1. django html5 关系,Django REST FrameWork中文教程5:关系和超链接API
  2. 每个程序员都必读的10篇文章
  3. matlab均线程序化交易,【策略分享】Matlab量化交易策略源码分享
  4. 运行keras出现 FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of type is deprecated解决办法
  5. 暗黑2战网服务器爆率修改,暗黑2修改MOD最初级基础
  6. springcloud工作笔记099---springboot集成netty,进行线程管理,socket通讯
  7. Jenkins 无法运行 putty.exe问题解决
  8. php mysql zend linux,Linux系统安装配置PHP+MySQL+zend+PHPadmin开发环境
  9. Unity Invoke 函数调用
  10. 如何查看excel中的vba代码
  11. udhcpc 的使用
  12. 将最新Chromium浏览器集成到.NET应用程序中
  13. Java工程师成神之路~(2018修订版)
  14. java矩形排样_优化排样(板材矩形一刀切算法)
  15. 2021 年 Kubernetes 的开发者工具:Helm、Kustomize 和 Skaffold
  16. 更新DOTA2显示无法连接到更新服务器,DOTA2无法正常更新的解决方法 官方公告
  17. Telegram附近的人功能存在安全风险,可被用于探测用户位置
  18. 计算机图形学 实验6 直线的裁剪—Cohen Sutherland裁剪算法(MFC中)
  19. Unity检视面板重构(OnInspectorGUI重写)
  20. HDU 2191 汶川大地震

热门文章

  1. Java8:Lambda表达式增强版Comparator和排序
  2. 机器视觉与深度神经网络—洗去浮华,一窥珠玑
  3. 洛谷P2746 [USACO5.3]校园网Network of Schools
  4. dubbo源码分析系列——dubbo-cluster模块源码分析
  5. 日志组件logback介绍及配置使用方法
  6. SQL Server数据库中批量导入数据的四种方法总结
  7. Web前端开发学习资料分享
  8. IPv6 auto config 原理详解之-----前缀公告
  9. 解决thymeleaf报错 $ is not defined
  10. JavaFX控件ID:设置Label文本内容代码示例