Python数据容器之元组的用法

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 元组本质上是只读的列表list。除了不能修改之外,其它特性和列表相似。

这是机器未来的第8篇文章


1. 元组概述

元组本质上是只读的列表list。除了不能修改之外,其它特性和列表相似

列表是容器数据类型,可存储多个元素,且支持不同类型数据,可修改,有序列表,可重复。

举例:

x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89'])

x

(1, 'abc', True, {'name': 'Joe'}, 1, 2, ['7', '89'])

例子中展现了以下情况:

  • 不同的数据类型共存一个元组的情况:有数值类型、字符串、有列表、字典
  • 元组包含其他容器类型:字典{“name”:“Joe”}和列表[‘7’, ‘89’]
  • 元组展现了重复的数据,列表中存在2个1

2. 定义元组

定义元组的方法有2种,tuple函数和()元组运算符

2.1 tuple函数

首先看一下tuple()函数的描述:从输出的描述信息中可知,tuple仅支持1个参数:

  • 可为空,为空时则创建一个空列表

x1 = tuple()

print(x1, type(x1))

() <class 'tuple'>

不为空时,参数必须是可迭代类型

  • 什么是可迭代对象呢?举个简单的例子,能够在for循环中遍历使用的都是可迭代类型,具体的可迭类型有字符串、列表、元组、字典。

x0 = tuple()                         # 无参数,空元组

print(x0, type(x0))

x1 = tuple("name")                   # 用字符串初始化元组

print(x1, type(x1))

x2 = tuple([1, 2, 'a', 'b', 'c'])    # 用列表初始化元组    

print(x2, type(x2))

x3 = tuple((1, 2, 3, 4))             # 用元组初始化元组

print(x3, type(x3))

d1 = {"name":"zsm", "age":18, "sex":"male"}

x4 = tuple(d1.keys())                  # 用字典初始化元组:对于key和value需要分别处理

x5 = tuple(d1.values())

print(x4, type(x4), x5, type(x5))

2.2 ()元组运算符

x1 = ()                 # 空元组

print(x1, type(x1))

x2 = (1, 2, 3, 4)       # 有元素的元组

print(x2, type(x2))

3. 元组的不可修改性

元组为不可变数据类型,和字符串一样,存储于内存的堆区,是直接引用类型。举例:

x2 = (1, 2, 3, 4)       # 有元素的元组

print(x2, type(x2))

x2[2] = 7

特殊情况:元组中的元素如果是可变数据类型,那么可变数据变量中的元素是可以被修改的,其本质上符合可变数据类型可修改的逻辑。

举例:

x3 = (1, 2, 3, [5, 6, 7], (8, 9, 10))

x3[3] = 5   # 修改元组中的元素x3[3], 元组是不可变数据类型,元组中的元素不可以被修改

x3[3][0] = 20           # 元组中的元素是可变数据类型列表,修改列表中的元组是可行的

x3

x3[4][0] = 22   # 元组中的元素为元组类型时,同样时不可变数据类型,元组中的元素修改也会报错。

x3

4. 元组常用方法

x = (1, 2, 3, [5, 6, 7], (8, 9, 10))

dir(x)

['add',</br> 'class',</br> 'contains',</br> 'delattr',</br> 'dir',</br> 'doc',</br> 'eq',</br> 'format',</br> 'ge',</br> 'getattribute',</br> 'getitem',</br> 'getnewargs',</br> 'gt',</br> 'hash',</br> 'init',</br> 'init_subclass',</br> 'iter',</br> 'le',</br> 'len',</br> 'lt',</br> 'mul',</br> 'ne',</br> 'new',</br> 'reduce',</br> 'reduce_ex',</br> 'repr',</br> 'rmul',</br> 'setattr',</br> 'sizeof',</br> 'str',</br> 'subclasshook',</br> 'count',</br> 'index']

和列表list相对,方法少了很多,仅剩下count和index了。

4.1 count方法

统计元素在元素中的个数

x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89'])     # 注意:True也被认为是1

x.count(1)

4.2 index方法

返回元组中元素第一次出现的索引位置

x = (1, 'abc', True, {"name":"Joe"}, 1, 2, ['7', '89'])     # 2所在位置索引为5

x.index(2)

以上就是python列表的基础语法知识,更加深入的用法会在人工智能的学习过程中学到!

扩展:如果真的需要修改元组,有什么办法呢?

请关注下一节:序列。

《Python零基础快速入门系列》快速导航:

推荐阅读:


相关文章
|
24天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
22天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
53 2
|
1月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
40 1
|
1月前
|
传感器 物联网 开发者
使用Python读取串行设备的温度数据
本文介绍了如何使用Python通过串行接口(如UART、RS-232或RS-485)读取温度传感器的数据。详细步骤包括硬件连接、安装`pyserial`库、配置串行端口、发送请求及解析响应等。适合嵌入式系统和物联网应用开发者参考。
53 3
|
索引 Python 容器
Python基础知识10: 容器类型公共方法
Python基础知识10: 容器类型公共方法
125 0
|
22天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
21天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
9天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
101 80