3-2、python内置数据类型(列表和元组)

news2024/11/16 4:54:48

文章目录

  • 序列
  • 列表
    • 列表的创建
    • 列表的基本特性
      • 连接操作符和重复操作符
      • 成员操作符(in和not in)
      • 索引
      • 切片
      • for循环
    • 列表的常用方法
      • 增加
      • 修改(通过索引和切片重新赋值)
      • 查看
      • 删除
      • 其他操作
  • 元组(和列表相比,不能增删改元素)
    • 元组的创建
    • 元组的特性
    • 常用方法
  • 命名元组namedtuple
  • is和==的区别


列表和数组的区别:
数组只能存放同一种数据类型
而列表能存放不同数据类型

元组和列表的区别:
元组不能增删改、其他和列表一样

序列

  • 什么是序列:
    成员是有序排列的,且可以通过下标偏移量访问到它的一个(即索引)或者访问几个成员(即切片),这类类型统称为序列。

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

  • 特点:支持以下特性:
    索引和切片操作符
    成员关系操作符(in 和 not in)
    连接操作符(+)以及重复操作符(*)

数字10是序列吗?
不是,数字10,既不能索引也不能切片,所以不是序列

列表

列表的创建

#列表的创建
list=[]
print(list,type(list))
li=[1]
print(li,type(li))

在这里插入图片描述

列表的基本特性

连接操作符和重复操作符

print([1,2] + [2,3]) #[1,2,2,3]
print([1,2] * 3) #[1,2,1,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, "z"]])  # True
print(1 in ["a", False, [1, 2, "z"]])  # False
print(0 in ["a", False, [1, 2, "z"]])  # True

在这里插入图片描述

索引

list = [1,2,3,[1,'b',3]]
print(list[0]) #1
print(list[2]) #3
print(list[-1]) #[1,'b',3]
print (list[-1][-2]) #b
print(list[3][1]) #b

在这里插入图片描述

切片

list=['172','25','254','100']
print(list[:2]) #['172','25']
print(list[1:]) #['25','254','100']
print(list[::-1]) #['100', '254', '25', '172']

#需求:已知['172','25','254','100'],输出100-254-25
print('-'.join(list[3:0:-1])) #方法1
print("-".join(list[1:][::-1]))  #方法2
print("-".join(list[::-1][:3])) #方法3

在这里插入图片描述

for循环

names = ["mary","joe","jack"]
for item in names:
    print(f"姓名是{item}")

在这里插入图片描述

列表的常用方法

在这里插入图片描述

增加

#在列表结尾追加
list=[1,2,3]
list.append(4)
print(list) #[1,2,3,4]
# 在列表开头添加
list=[1,2,3]
list.insert(0,'cat')
print(list) #['cat',1,2,3]
# 在某一个索引之前添加
list=[1,2,3]
list.insert(2,'cat') #在索引2前面添加
print(list)
# 依次追加多个元素
list=[1,2,3]
#list.append([4,5,6]) #[1, 2, 3, [4, 5, 6]],, append只能将456作为一个列表添加进去
list.extend([4,5,6])
print(list)

在这里插入图片描述

修改(通过索引和切片重新赋值)

#通过索引直接修改
list=[1,2,3]
list[0]='cat'
print(list)
list[-1]='dog'
print(list)
#通过切片修改
list=['a','b','c']
list[:3]=['cat','dog','pig']
print(list)
list[1:3]=['rabbit','panda']
print(list)

在这里插入图片描述

查看

#通过索引和切片查看元素
list=['a','b','c','a','a','c']
print(list[2]) # c
print(list[1:6]) # bcaac
print(list[:2]) #ab
print(list[4:])#ac
#查看元素出现次数和索引值
print(list.count('a')) #3,查看列表中元素a出现的个数
print(list.index('c')) #2 查看列表中元素c的索引,找到第一个之后就返回

在这里插入图片描述

删除

#根据索引删除元素
list=['a','b','c','a','a','c']
list.pop(-1) #删除最后一个元素 ['a','b','c','a','a']
list.pop(0) #删除索引为0的元素 ['b','c','a','a']
print(list)
list=[1,2,3]
delete_num=list.pop(0) #将删除的元素存储在变量delete_num中
print('删除的元素是:', delete_num)

#根据value值删除
li=['a','b','c','b','c']
li.remove('c') #将出现的第一个元素c删除
print(li)

#全部清空
li=['a','b','c']
li.clear()
print(li)

在这里插入图片描述

其他操作

list=[14,24,5,99]

#reverse翻转函数
list.reverse()  #和list[::-1]类似
print(list)  #[99, 5, 24, 14]

#sort排序函数
list.sort()
print(list) #[5, 14, 24, 99] 由小到大排序
list.sort(reverse=True)
print(list) #由大到小排序

#copy复制函数
li=list.copy()
print(id(li),id(list)) #查看这两个链表的地址
print(li,list) #查看这两个链表的内容

在这里插入图片描述

元组(和列表相比,不能增删改元素)

!!!当元组中只有一个元素时,元素后面一定要加逗号

元组的创建

t1 = ()
print(t1, type(t1))  # ()  tuple
t2 = (2)
print(t2, type(t2))  # 2  int型
t3 = (2,)
print(t3, type(t3))  # 2  tuple

t4 = (1, 2.2, True, [1, 2, 3])
print(t4, type(t4))

在这里插入图片描述

元组的特性

#连接和重复
t=(1,2,'c')
print(t+('a',))
print(t*3)

#成员操作符
t=(1,2,'hello')
print('hello' in t)
print('hi' not in t)

#索引和切片
t=(1,2,'a','c')
print(t[0]) #1
print(t[-1]) # c
print(t[:2]) #(1,2)
print(t[::-1]) #('c', 'a', 2, 1)

在这里插入图片描述

常用方法

#常用方法:元组是不可变数据类型(不能增删改)
#查看
#通过索引和切片查看
#查看索引值和元素出现次数
t=(1,2,3,'a','b',2)
print(t.count(2)) #2
print(t.index(2)) #1

在这里插入图片描述

命名元组namedtuple

对元组中的每个元素都设置了名字,在操作以及读代码的时候更加方便

tu=("li",18, "西安")
print(tu[0],tu[1],tu[2])
#从collections模块中导入namedtuple工具
from collections import namedtuple
#创建命名元组对象User
User=namedtuple('User',('name','age','city'))
#给命名元组传值
user1=User("li",18, "西安")
#打印命名元组
print(user1)
print(user1.name)
print(user1.age)

在这里插入图片描述

is和==的区别

"""
python中:
==用于判断类型和值是否相等
is用于判断类型和值是否相等,内存地址是否相等, is也被叫做同一性运算符
"""
print(1 == '1')  # false 整型不等于字符串
li = [1, 2, 3, 'a']
li1 = li.copy()
print(li1 == li) #True,均为列表,且值相等
print(id(li),id(li1)) #查看内存地址
print(li1 is li) #False, 类型和值相等,但是内存地址不同

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30分钟带你精通Git使用

一、 版本控制工具 1.1. 什么是版本控制系统? 版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且…

[附源码]SSM计算机毕业设计班级风采网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

TIA博途中累计流量的两种计算方法示例

TIA博途中累计流量的两种计算方法示例 如下图所示,首先,我们要了解累计流量的含义: 即t1至t2时刻,对瞬时流量求定积分,由上图可知,t1至t2的定积分,即蓝色部分的面积,那么直接求这个面积是有难度的,我们只能用近似的方法来求取, 如下图所示,把该部分面积分割成一个个…

最简单的git图解(git stash)

大家平时开发过程中肯定遇到过这样的情况:代码写了一半,但是需要紧急修改一个bug,还是在当前项目中修改,这时怎么办呢?把写了一半的代码进行提交?可能编译还通不过,或是启动不了,要是…

Java项目:SSH学生学籍管理系统及教务管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本系统包含管理员、教师、学生三种角色; 管理员角色包含以下功能: 管理员登录,学科管理,班级管理,教师管理,学籍信息管理,课表管理…

外贸软件助力国际贸易企业业财共享数字化转型升级

外贸企业数字化转型新机遇丨汇信外贸软件助力业财一体共享升级 随着国际化的进程不断加速,国际贸易市场的发展,使得外贸企业的业务范围不断扩大,海量的资源信息在世界各地不断产生。为了应对国际贸易信息传递的及时性,关于财务信…

[MySQL]复杂查询(进阶)

专栏简介 :MySql数据库从入门到进阶. 题目来源:leetcode,牛客,剑指offer. 创作目标:记录学习MySql学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录 1.新增 2. 聚合查询 2.1 聚合函数 3. 分组查询…

Web UI 自动化测试:如何使用隐私模式进行测试

来啦老铁! 这两天有个任务需要在桌面端 UI 自动化中使用隐私模式进行测试,之前没有用过,且在调研的时候还是小小花了点时间各种查资料的,因此做一下记录; 学习路径 1、Chrome 浏览器配置; 2、Edge 浏览…

电脑换cpu要重装系统吗

​cpu是一台电脑的控制以及运算核心,有十分重要的作用,不少小伙伴会遇到更换cpu的问题,所以小伙伴会提前了解换cpu要重装系统吗或者换cpu后bios如何设置的这类问题,接下来小编就为大家带来了详细的介绍,感兴趣的用户可…

(七)Bean的实例化方式

文章目录环境Bean的实例化方式通过构造方法实例化通过简单工厂模式实例化通过工厂方法模式实例化通过FactoryBean接口实例化BeanFactory和FactoryBean的区别BeanFactoryFactoryBean工厂Bean的使用:注入自定义Date上一篇:(六)Sprin…

【免杀前置课——Windows编程】十二、线程同步——一文讲懂什么是线程同步、原子操作函数、临界区、互斥体(激发态与非激发态区别)

线程同步线程同步多线程运行同一操作对象问题解决方案A:原子操作函数解决方案B:临界区解决方案C:互斥体激发态与非激发态互斥体优点:线程同步 多线程运行同一操作对象问题 #include<iostream> #include<Windows.h>LONG g_count 0; DWORD WINAPI myThreadProc1(_…

C语言工具——Visual Studio 的安装

很多新手朋友们&#xff0c;反应使用 IE 浏览器下载 Visual Studio 下载不下来&#xff0c;此时我们可以在 IE 浏览器上先装一个谷歌浏览器&#xff1a; https://chrom.lkcyl.cn/ . 然后打开谷歌&#xff0c;输入 VS 2019 的下载地址&#xff1a;https://learn.microsoft.com/…

深入浅出带你了解PHAR反序列化

前情提要 为了丰富自己是知识体系&#xff08;为了日更薅羊毛&#xff09;&#xff0c;我最近频繁翻阅MDN的文档&#xff0c;果然MDN文档常看常新。 最近翻到CSS部分&#xff0c;然后打开了伪类这一栏&#xff0c;好家伙&#xff0c;快60个了&#xff08;包括实验中的&#x…

【EC200U】 SIM卡使用

EC200U SIM卡SIM卡是什么SIM卡分类Quecpython SIM库调用获取sim卡的状态获取IMSI获取ICCID运行测试我们物联网要用到SIM卡&#xff0c;这张卡是4G应用的基础&#xff0c;许多功能都需要用到SIM卡。买此类板子别忘了买SIM卡哦。 SIM卡是什么 SIM卡是(Subscriber Identity Modul…

影刀连接Mysql数据库

这里写自定义目录标题官方教程下载安装Mysql-connector配置数据源填写影刀的配置的向导官方教程 官方影刀下载mysql连接教程 https://www.winrobot360.com/yddoc/language/zh-cn/%E6%8C%87%E4%BB%A4%E6%96%87%E6%A1%A3/%E5%85%B6%E4%BB%96/%E6%95%B0%E6%8D%AE%E5%BA%93/%E8%BF…

初步探索GraalVM--云原生时代JVM黑科技

1 云原生时代Java语言的困境 经过多年的演进&#xff0c;Java语言的功能和性能都在不断的发展和提高&#xff0c;诸如即时编译器、垃圾回收器等系统都能体现Java语言的优秀&#xff0c;但是想要享受这些功能带来的提升都需要一段时间的运行来达到最佳性能&#xff0c;总的来说…

linux笔记(5):按照东山派的官方教程编译buildroot(东山哪吒,D1-H)踩坑记录

文章目录1.编译流程1.1获取sdk源码1.2 补充&#xff1a;下载riscv64-glibc-gcc-thead_20200702.tar.xz1.3 补充&#xff1a;安装mtool工具1.4 安装必要依赖包1.5 编译sdcard 最小系统镜像1.6 烧录最小镜像系统到tf(SD)卡1.6.1 安装烧录工具1.6.2 格式化SD卡1.6.3 烧录镜像到sd卡…

杂篇(一)

开篇词 我本是红尘一俗客&#xff0c;没有那文人酸腐气。 曾几何时&#xff0c;梳理收藏夹&#xff0c;发现了很久前收藏的一位前端大佬的个人博客&#xff1a;怡红院落 &#xff0c;因为领域不同&#xff0c;之前一直没有拜读过他的文章。 我尚且无法判断怡红公子购买的域名…

【Log日志】springboot项目中集成Log日志详解

springboot项目中集成Log日志详解一、Log日志介绍1.Log 日志组件主要作用及用途2.日志的级别Level级别控制3.日志的输出Import3.1 快速使用3.2 日志文件输出3.3 自定义配置4. Spring Boot 日志组件 Log Plugin二、Spring Boot Logback1.依赖配置 Pom.xml2.使用 YML 配置 logbac…

Linux操作系统~系统文件IO,什么是文件描述符fd?什么是vfs虚拟文件系统

目录 1.open() &#xff08;1&#xff09;.第二个参数flags—通过比特位传多组标记 2.文件描述符fd&#xff08;open函数的返回值&#xff09; &#xff08;1&#xff09;.fd的本质 &#xff08;2&#xff09;.vfs-虚拟文件系统&#xff08;一切皆文件&#xff09; &…