iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python内置数据结构列表与元组的详细介绍
  • 261
分享到

Python内置数据结构列表与元组的详细介绍

2023-06-20 19:06:51 261人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python内置数据结构列表与元组的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 序列 列表1 列表的特性1.

本篇内容介绍了“python内置数据结构列表与元组的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 序列

  • 列表

    • 1 列表的特性

      • 1.1 列表的连接操作符和重复操作符

      • 1.3 列表的索引

      • 1.4 列表的切片

      • 1.5 列表的循环(for)

    • 2 列表的基本操作(增删改查)

      • 2.1 列表的增加

      • 2.2 列表的修改

      • 2.3 查看

      • 2.4 列表的删除

      • 2.5 其他操作

  • 元组

    • 1 元组的创建

      • 2 元组的特性

        • 3 元组的命名

        • 深拷贝和浅拷贝

          • 1 值的引用

            • 2 浅拷贝

              • 3 深拷贝

              • is 和 ==的对比

                • 总结

                  1. 序列

                  序列:成员有序排列,可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。

                  序列数据包括:字符串、列表和元组类型。

                  特点:都支持索引和切片操作符;成员关系操作符(in,not in);连接符(+)&重复操作符(*)

                  2. 列表

                  数组array:存储同种数据类型的数据结构。[1,2,3],[1.1,2.2,3.1]

                  列表list:打了激素的数组,可以存储不同数据类型的数据结构。[1,2.2,‘hello']

                  列表的创建:

                  li = []#空扩列表print(li, type(li))li1 = [1]#只有一个元素的列表print(li1, type(li1))

                  2.1 列表的特性

                  Python内置数据结构列表与元组的详细介绍

                  2.1.1 列表的连接操作符和重复操作符
                  print([1,2] + [2,3])    #[1,2,2,3]print([1,2] *3)     #[1,2,1,2,1,2]
                  2.1.2 列表的成员操作符(in,not in)
                  print(1 in [1,2,3]) #True"""#返回的数据类型为bool型布尔类型:    True: 1    False: 0"""print(1 in ["a", True, [1,2]])  #由于此处有True所以会默认认为1属于该列表print(1 in ["a", False, [1,2]])  #False
                  2.1.3 列表的索引

                  根据索引来返回索引到的值;

                  li = [1,2,3,[1,2,3]]print(li[0])    #返回数值1print(li[-1])    #返回倒数第一个值[1, 2, 3]li1 = [1,2,3,[1,"b",3]]print(li1[-1])    #返回倒数第一个值[1, 'b', 3]print(li1[-1][0])    #返回倒数第一个元素中的第一个元值 1print(li1[3][-1])    #返回第四个元素中的倒数第一个值 3
                  2.1.4 列表的切片
                  li = ['172','25','254','100']print(li[:2])   #拿出列表中的前两个元素['172', '25']print(li[1:])   #拿出列表中的第二个到最后一个元素['25', '254', '100']print(li[::-1]) #将列表反转['100', '254', '25', '172']

                  如已知一个列表信息为 [‘172',‘25',‘254',‘100'],现在需要输出'100-254-25“;

                  print('-'.join(li[3:0:-1]))#表示从第四个元素开始,倒序依次拿出然后再拼接起来print('-'.join(li[:0:-1]))#表示从最后一个元素开始,倒序依次拿出然后再拼接起来print('-'.join(li[1:][::-1]))#表示从第二个元素开始,全部拿出之后在倒序拼接
                  2.1.5 列表的循环(for)
                  names = ['小张','张哥','张师']for name in names:    print(f"zxk的别名是:{name}")

                  Python内置数据结构列表与元组的详细介绍

                  2.2 列表的基本操作(增删改查)

                  2.2.1 列表的增加

                  追加

                  追加默认是在列表的最后添加;

                  li = [1,2,3]li.append(4)print(li)#[1, 2, 3, 4]

                  在列表开头添加

                  li = [1,2,3]li.insert(0,'cat')print(li)#['cat', 1, 2, 3]li = [1,2,3]li.insert(2,'cat')print(li)#在索引2前面添加cat[1, 2, 'cat', 3]

                  一次追加多个元素

                  li = [1,2,3]    #添加4,5,6,li.append([4,5,6])  print(li)#[1, 2, 3, [4, 5, 6]]li.extend([4,5,6])  print(li)#[1, 2, 3, 4, 5, 6]
                  2.2.2 列表的修改

                  通过索引和切片重新赋值的方式去修改;

                  li = [1,2,3]li[0] = 'cat'      print(li)#['cat', 2, 3]li[-1] = 'westos' print(li)#['cat', 2, 'westos']li = [1,2,3]li[:2] = ['cat','westos']   #表示从第一个开始修改两个['cat', 'westos', 3]print(li)
                  2.2.3 查看

                  通过索引和切片查看元素,查看索引值和出现次数;

                  li = [1,2,3,4,3,2,3]print(li.count(1))  #查看数字1出现的次数print(li.index(3))  #查看元素对应的索引
                  2.2.4 列表的删除

                  根据索引删除

                  li = [1,2,3]#print(li.pop(1))    #将缩索引的第一个删除,[1, 3]delete_num = li.pop(-1)print(li)print("删除的元素是:",delete_num) #删除的元素是: 3

                  根据value值删除

                  li = [1,2,3]li.remove(3)    print(li)#[1, 2]

                  全部清空

                  li =[1,2,3]li.clear() print(li) #[]
                  2.2.5 其他操作

                  除了上面的之外还有反转,排序,复制等操作;

                  li =[5,4,13,20]li.reverse()   print(li)#反转 [20, 13, 4, 5]li.sort()  print(li) #从小到大排序[4, 5, 13, 20]#sort默认从小到大,如果想要从大到小,需要用reverse来反转li.sort(reverse=True)     print(li)  #从大到小排序[20, 13, 5, 4]li1 = li.copy()print(id(li),id(li1))   #复制前后两个列表的ID不一样 2097933779264 2097933779648print(li,li1)   #[20, 13, 5, 4] [20, 13, 5, 4]

                  3. 元组

                  元组tuple:带了紧箍咒的列表,和列表的唯一区别是不能增删改。

                  3.1 元组的创建

                  元组中只有一个元素时一定要添加逗号,不然会将其试做对应的信息,

                  t1 = () #空元组print(t1,type(t1))t2 = (1)    #只有单个元素时不是元组,当要是元组是要加逗号print(t2,type(t2))#1 <class 'int'>t3 = (1,2.2,True,[1,2,3,])  print(t3,type(t3))##(1, 2.2, True, [1, 2, 3]) <class 'tuple'>

                  3.2 元组的特性

                  由于元组是带了紧箍咒的列表,所以没有增删改的特性;

                  1. 连接符和重复操作符print((1,2,3)+(3,)) #(1, 2, 3, 3)print((1,2,3) *2)   #(1, 2, 3, 1, 2, 3)2. 成员操作符print(1 in (1,2,3)) #True3. 切片和索引t = (1,2,3)print(t[0])     #1print(t[-1])    #3print(t[:2])    #(1, 2)print(t[1:])    #(2, 3)print(t[::-1])  #(3, 2, 1)

                  查看:通过索引和切片查看元素,查看索引值和出现次数;

                  t = (1,4,5,2,3,4)print(t.count(4))   #统计4出现的次数,返回值为2print(t.index(2))   #查看元素2 的,返回的索引值为3

                  3.3 元组的命名

                  Tuple还有一个兄弟,叫namedtuple。虽然都是tuple,但是功能更为强大。collections.namedtuple(typename, field_names)typename:类名称field_names: 元组中元素的名称

                  实例化命名元组

                  # import datetime# today = datetime.date.today()# print(today)tuple = ('name','age','city')#普通的元组格式,当需要取出时,需要一个一个取出信息print(tuple[0],tuple[1],tuple[2])# name age city

                  可以从collections模块中导入namedtuple工具:

                  from collections import namedtuple#1.创建命名元组对象UserUser = namedtuple('User',('name','age','city'))#2.给命名元组传值user1 = User("zxk",24,"西安")#3.打印命名元组print(user1)        #User(name='zxk', age=24, city='西安')# 4. 获取命名元组指定的信息print(user1.name)   #zxkprint(user1.age)    #24print(user1.city)   #西安

                  4. 深拷贝和浅拷贝

                  Python内置数据结构列表与元组的详细介绍

                  问题: 深拷贝和浅拷贝的区别? Python中如何拷贝一个对象?

                  赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)

                  浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())

                  公用一个值;
                  这两个变量的内存地址一样;
                  对其中一个变量的值改变,另外一个变量的值也会改变;

                  深拷贝: 一个变量对另外一个变量的值拷贝。(copy.deepcopy())

                  两个变量的内存地址不同;
                  两个变量各有自己的值,且互不影响;
                  对其任意一个变量的值的改变不会影响另外一个;

                  4.1 值的引用

                  nums1 = [1,2,3]nums2 = nums1nums1.append(4)print(nums2)       # [1, 2, 3, 4]

                  因为num1和num2指向同一个内存空间,所以当nums1添加值时,相当于nums2也添加了值。

                  4.2 浅拷贝

                  n1 = [1,2,3]n2 = n1.copy()  #n1.copy和n1[:]都可以实现拷贝。print(id(n1),id(n2))#2708901331648 2708901331264n1.append(4)print(n2)       #n1和n2的内存地址不同,修改并不互相影响 [1, 2, 3]

                  加粗样式

                  4.3 深拷贝

                  有列表嵌套时,或者说列表中包含可变数据类型时,一定要选择深拷贝.

                  可变数据类型(可增删改的):列表(list)
                  不可变数据类型:数值,字符串(str),元组(tuple) namedtuple;变量指向内存空间的值不会改变。

                  n1 = [1,2,[1,2]]n2 = n1.copy()#n1和n2的内存地址:的确拷贝了   #2859072423168 2859072422336print(id(n1),id(n2))#n1[-1]和n2[-1]的内存地址:    #最后一个元素的地址:2859072425664 2859072425664print(id(n1[-1]),id(n2[-1]))n1[-1].append(4)print(n1)#[1, 2, [1, 2, 4]]print(n2)   #[1, 2, [1, 2, 4]]

                  深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。
                  假设B复制了A,在修改A的时候,看B是否发生变化:
                  如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
                  如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)

                  如何实现深拷贝 copy.deepcopy

                  import copyn1 = [1,2,[1,2]]n2 = copy.deepcopy(n1)#n1和n2的内存地址:的确拷贝了print(id(n1),id(n2))    #2894603422016 2894603421056#n1[-1]和n2[-1]的内存地址:print(id(n1[-1]),id(n2[-1]))    #最后一个元素的地址:2894603422272 2894603419776n1[-1].append(4)     #n1 = [1, 2, [1, 2, 4]]print(n2)            #n2 = [1, 2, [1, 2]]

                  5. is 和 ==的对比

                  在 python 语言中 :

                  ==:判断类型和值是否相等

                  is: 类型和值是否相等,内存地址是否相等

                  == is和==两种运算符在应用上的本质区别是:

                  1). Python中对象的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

                  2). is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。

                  3). ==用来比较判断两个对象的value(值)是否相等;(type和value)
                  is也被叫做同一性运算符, 会判断id是否相同;(id, type 和value)

                  print(1 == '1') #由于数据类型不一致Falseli = [1,2,3]li1 = li.copy()print(li == li1)    #True#类型和值相等,但是内存地址不相等print(id(li),id(li1))print(li is li1)    #False

                  快速注释代码的快捷键:ctrl+/
                  快速缩进的快捷键:选中需要缩进的代码+tab
                  快速取消缩进的快捷键:选中需要缩进的代码 ,按shift+tab

                  练习:云主机管理系统

                  编写一个云主机管理系统:

                  - 创建云主机(IP,hostname,IDC)

                  - 搜索云主机(顺序查找)

                  - 删除云主机

                  -查看所有云主机信息

                  from collections import namedtuplemenu = """        云主机管理系统        1).添加云主机        2).搜索云主机(IP搜索)        3).删除云主机        4).云主机列表        5). 退出系统请输入您的选择:"""# 1. 所有云主机信息如何存储?选择哪种类型存储?  选择列表# 2. 每个云主机信息该如何存储?IP,hostname.IDC  选择命名元组hosts = []Host = namedtuple('Host',('ip','hostname','idc'))while True:    choice = input(menu)    if choice == '1':        print("添加云主机".center(50,"*"))        ip = input("ip:")        hostname = input("hostname:")        idc = input("idc(eg:ali,huawei...):")        host1 = Host(ip,hostname,idc)        hosts.append(host1)        print(f"添加{idc}的云主机成功。IP地址为{ip}")    elif choice == '2':        #怎么搜索:for循环(for..else),判断,break        print("搜索云主机".center(50,"*"))        for host in hosts:            ipv4 = input("please input ipv4:")            if ipv4 == host.ip:                print(f'{ipv4}对应的主机为{host.hostname}')            else:                break    elif choice == '3':        print("删除云主机".center(50,"*"))        for host in hosts:            delete_hostname = input("please input delete hostname:")            if delete_hostname == host.hostname:                hosts.remove(host)                print(f'对应的主机{delete_hostname}已经删除')            else:                break    elif choice == '4':        print("云主机列表".center(50,"*"))        print("IP\t\t\thostname\tidc")        count = 0        for host in hosts:            count +=1            print(f"{host.ip}\t{host.hostname}\t{host.idc}")            print(f'云主机总个数为:{count}')    elif choice == '5':        print("系统正在退出,欢迎下次使用......")        exit()    else:        print("请输入正确的选项!")

                  Python内置数据结构列表与元组的详细介绍

                  “Python内置数据结构列表与元组的详细介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

                  --结束END--

                  本文标题: Python内置数据结构列表与元组的详细介绍

                  本文链接: https://www.lsjlt.com/news/299397.html(转载时请注明来源链接)

                  有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

                  本篇文章演示代码以及资料文档资料下载

                  下载Word文档到电脑,方便收藏和打印~

                  下载Word文档
                  猜你喜欢
                  • Python内置数据结构列表与元组的详细介绍
                    本篇内容介绍了“Python内置数据结构列表与元组的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 序列 列表1 列表的特性1....
                    99+
                    2023-06-20
                  • Python内置数据结构列表与元组示例详解
                    目录1. 序列 2. 列表 2.1 列表的特性2.1.1 列表的连接操作符和重复操作符 2.1.3 列表的索引 2.1.4 列表的切片 2.1.5 列表的循环(for) 2.2 列表...
                    99+
                    2024-04-02
                  • Python数据结构之列表与元组详解
                    目录Python 列表(list):1.序列介绍:2.列表的概述:3.创建一个列表4.列表的索引5.列表的分片6.列表的分片赋值7.循环遍历列表8.查找元素与计数9.列表增加元素:1...
                    99+
                    2024-04-02
                  • Python内置数据结构——列表list
                    内置数据结构分类:数值型int , float , complex , bool序列对象字符串 str列表 listtuple(元组)键值对集合 set字典 dict数字型int ,float , complex , bool都是class...
                    99+
                    2023-01-31
                    数据结构 列表 Python
                  • Python中的列表详细介绍
                    本篇内容主要讲解“Python中的列表详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的列表详细介绍”吧!Python中的for循环Python中的for循环语句按顺序遍历任...
                    99+
                    2023-06-16
                  • Java中LinkedList数据结构的详细介绍
                    目录1.介绍2.Java 链表的方法3.代码1.介绍 Linked List 是 java.util 包中 Collection 框架的一部分。LinkedList 数据结构的实现,...
                    99+
                    2023-05-18
                    Java LinkedList LinkedList 数据结构
                  • python学习3-内置数据结构2-元组
                    元组是不可变的,可hash 1、定义t = tuple()t = (1,2,3)2、查t[index] #按照下标获取值t.index(value) #按照值获取下标值,不存在报value errott.count(value) #获取某个...
                    99+
                    2023-01-31
                    数据结构 python
                  • Python列表list的详细用法介绍
                    目录一. 创建列表1.1 第一种1.2 第二种二. 查询列表2.1 获取列表元素索引2.2 获取列表单个元素2.3 获取列表多个元素2.3 判断元素是否存在于列表三. 列表添加操作四...
                    99+
                    2024-04-02
                  • python学习3-内置数据结构1-列表
                    列表及常用操作    列表是一个序列,用于顺序的存储数据1、定义与初始化lst = list() #使用list函数定义空列表lst = []    #使用中括号定义列表lst = [1,2,3]    #使用中括号定义初始值列表lst =...
                    99+
                    2023-01-31
                    数据结构 列表 python
                  • 【Python】基础数据结构:列表——元组——字典——集合
                    文章目录 一、简述二、Python中的列表详解2.1 创建列表2.2 访问列表元素2.3 修改列表元素2.4 列表切片2.5 列表方法2.6 列表推导式 三、Python中的元组详解3.1...
                    99+
                    2023-10-25
                    python 数据结构 原力计划
                  • python常用数据结构元组详解
                    目录Tuple 元组元组的定义和使用元组常用方法index(item)count(item):返回某个元素出现的次数元组解包元组与列表Tuple 元组 元组的定义和使用 元组的定义:...
                    99+
                    2024-04-02
                  • Python数据结构-----栈1.0(栈的介绍与操作)
                    目录 前言: 栈的介绍 Python栈的操作 1.创建栈 2.判断栈是否为满  3.判断栈是否为空  4.压栈 5.出栈 6.展示栈数据 7.获取到栈顶的数据 8.获取到栈的数据总数 第三方模块实现栈 下载模块: 导入模块:  使用示例: ...
                    99+
                    2023-10-18
                    数据结构 链表 java python 高级编程
                  • python中内置库os与sys模块的详细介绍
                    目录os包sys模块os包 想要使用os包一样要先导入:import os os包下可以直接调用的函数 下面介绍一下os包中可以直接调用的函数: 例子: 例子: 例子: ...
                    99+
                    2024-04-02
                  • Java 列表转换为数组的3种详细方法介绍
                    1.介绍 List 接口提供了一种存储有序集合的方法。它是 Collection 的子接口。它是一个有序的对象集合,其中可以存储重复值。由于 List 保留了插入顺序,因此它允许元素的位置访问和插入。...
                    99+
                    2023-09-22
                    java jvm 开发语言
                  • Python中数据类型的详细介绍
                    这篇文章主要讲解了“Python中数据类型的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中数据类型的详细介绍”吧!目录1、字符串2、布尔类型3、整数4、浮点数5、数字6...
                    99+
                    2023-06-02
                  • PostgreSQL中结合实际的内存数据介绍相关数据结构
                    小编给大家分享一下PostgreSQL中结合实际的内存数据介绍相关数据结构,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、数据结构   typedef st...
                    99+
                    2024-04-02
                  • 数据结构C语言链表的实现介绍
                    目录前言函数1. 链表初始化2. 计算链表长度3. 打印链表4.计算链表长度5. 删除链表中指定位置节点6. 向链表中指定位置插入节点7. 全代码+运行效果前言 需要用到的函数库 ...
                    99+
                    2024-04-02
                  • Python数据结构列表是怎样的
                    Python数据结构列表是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。正则小练习:匹配出以下字符串所有url,import re d...
                    99+
                    2023-06-22
                  • Python的数据结构与算法的队列详解(3)
                    目录模拟打印机任务队列过程主要模拟步骤:​构建队列程序模拟打印程序模拟打印过程(有注释)总结模拟打印机任务队列过程 计算机科学中也有众多的队列例子。比如计算机实验室有10台计算机,它...
                    99+
                    2024-04-02
                  • JS数据结构与算法中的队列结构详解
                    目录队列结构一.认识队列二.队列的应用三.队列类的创建四.队列的常见操作五.击鼓传花六.优先级队列七.优先级队列的实现队列结构 一.认识队列 受限的线性结构:我们已经学习了一种受限的...
                    99+
                    2022-11-13
                    JS数据结构与算法 JS队列结构
                  软考高级职称资格查询
                  编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
                  • 官方手机版

                  • 微信公众号

                  • 商务合作