[Python入门学习记录(小甲鱼)]第5章 列表 元组 字符串

第5章 列表 元组 字符串

5.1 列表

一个类似数组的东西

5.1.1 创建列表

一个中括号[ ] 把数据包起来就是创建了

number = [1,2,3,4,5]
print(type(number))
#返回 list 类型
for each in number:print(each)
#输出 1 2 3 4 5#列表里不要求都是一个数据类型
mix = [213,"sada",3.14,[1,2,3]]
#也可以是空的
empty = []

5.1.2 向列表添加元素

  • 使用 append()方法 添加单个元素,末尾添加
  • 使用 extend()方法 添加多个元素,实际是扩充一个列表进去,末尾添加
  • 使用 insert()方法 向列表插入元素
number = [1,2,3,4,5]
number.append(6)
print(number) # 输出[1,2,3,4,5,6]
number.extend([8,9])
print(number) # 输出[1,2,3,4,5,6,8,9]
number.insert(0,0)
print(number) # 输出[0,1,2,3,4,5,6,8,9]
number.insert(7,7)
print(number) # 输出[0,1,2,3,4,5,6,7,8,9]
number.insert(-1,8.5) # 正数表示和开头的相对位置,负数表示和结尾的相对位置
print(number) # 输出[0,1,2,3,4,5,6,7,8,8.5,9]

5.1.3 从列表获取元素

  • 通过索引值直接获取,num[0] 是第一个元素 num[-1]是最后一个元素
  • 交换元素位置,写法 num[0],num[3] = num[3],num[0] ,交换第一个元素和第四个元素位置
  • 使用 random.choice() 随机获取一个元素
import random
num = [1,2,3,4,5]
print(num[0],num[-1]) # 输出 1 5
num[0],num[3] = num[3],num[0]
print(num[0],num[3]) # 输出 4 1
print(random.choice(num)) # 随机输出

5.1.4 从列表删除元素

  • 使用remove()方法删除一个指定的元素
  • 使用pop()方法根据索引值取出一个元素并删除
  • 使用del语句删除元素或者直接删除变量
eggs = ["鸡蛋","鸭蛋","铁蛋","鹅蛋"]
eggs.remove('鸡蛋')
print(eggs) # 输出 ["鸭蛋","铁蛋","鹅蛋"]
print(eggs.pop(0)) # 输出 鸭蛋  没输入参数的话 默认取出最后一个元素
print(eggs) # 输出 ["铁蛋","鹅蛋"]
del eggs[0]
print(eggs) # 输出 ["鹅蛋"]
del eggs
print(eggs) # 已经删除了列表 会报错

5.1.5 列表切片

切片语法,从列表里取出一部分元素,创建一个新的拷贝并返回,不影响原列表

list1 = ['a','b','c','d','e']
print(list1[:2]) # 输出['a','b'] 起始位置不填 默认0
print(list1[1:]) # 输出['b','c','d','e'] 结束位置不填 默认到最后
print(list1[:]) # 输出['a','b','c','d','e'] 都不填 默认全打印

5.1.6 切片进阶玩法

增加一个步长,如果对切片后的列表操作,比如del或者赋值 就是改变原列表了

list1 = [1,2,3,4,5,6,7,8,9]
print(list1[0:9:2]) # 输出 [1,3,5,7,9]
print(list1[::2]) # 输出 [1,3,5,7,9]
print(list1[::-1]) # 输出 [9,8,7,6,5,4,3,2,1]  0开始  -1 -2 -3 -4 -5 ...
del list1[0:2] 
print(list1) # 输出 [3,4,5,6,7,8,9]
list1[0:2] = [1,2] 
print(list1) # 输出 [1,2,5,6,7,8,9]

5.1.7 列表使用常见操作符

list1 = [123]
list2 = [234]
print(list1 > list2) # 输出 false 一个一个元素比较  有结果直接返回
print(list1 + list2) # 输出 [123,234] 和 extend 一个效果
print(list1 * 3) # 输出 [123,123,123]
print(123 in list1) # true 判断元素是否存在列表中
print(234 not in list1) # true#去掉列表中的重复元素
old_list = ['1','2','2','3','4']
new_list = []
for mstr in old_list :if mstr not in new_list :new_list.append(mstr)
print(new_list) # 输出 ['1','2','3','4']

5.1.8 列表常用方法

print(dir(list)) # 输出list的所有方法和属性list = [1,1,2,3,5,8,13,21]
print(list.count(1)) # 输出2  count输出元素在列表出现次数
print(list.index(1)) # 输出0  index输出元素在列表第一次出现的索引
print(list.index(1,1,8)) # 输出1  index 可以设定范围
list.reverse()
print(list) # 输出 [21,13,8,5,3,2,1,1] 翻转列表
list.sort()
print(list) # 输出 [1,1,2,3,5,8,13,21] 排序用的 默认从小到大
list.sort(reverse = True)
print(list) # 输出 [21,13,8,5,3,2,1,1] 排序 从大到小  sort(func,key,reverse)

5.2 元组

元组就是只读的列表,无法修改,只能读取

5.2.1 创建和访问元组

创建列表用中括号[ ],元组用小括号( )

tuple = (1,2,3,4,5,6) # 创建时 单个元素要带, (520,)这种 或者,不要括号也可以 520,
print(type(tuple)) # 输出 tuple
print(tuple[0]) # 输出 1
print(tuple[3:]) # 输出 (4,5,6)
print(tuple[:5]) # 输出 (1,2,3,4,5)

5.2.2 更新和删除元组

元组元素无法修改,只能通过切片和其他操作符的操作间接实现

tuple = ('小鸡','小花','小猪','小狗')
tuple = (tuple[0],"小猫") + tuple[2:] # 建立一个新元组再拼接切片
print(tuple) #输出 ('小鸡','小猫','小猪','小狗')  看似都是tuple 但id值不同#删除操作也能用切片拼接实现 del是删除整个元组 一般不用 会自动垃圾回收  其他操作符 也都和列表一样使用

5.3 字符串

和C语言的差不多,但是’ '和" "都可以使用,注意必须成对使用,字符串也不能修改元素,要修改就得切片拼接,其他操作符也和列表 元组一样用

str2 = "一只穿云箭"
str2 = str2[0] + "支" + str2[2:]
print(str2) # 输出 一支穿云箭

5.3.1 各种BIF

太多了 记不住,用得到再查吧,跳过,注意涉及到字符串修改的 都不修改原字符串 只返回一个新字符串

5.3.2 格式化

#字符串 format
str2 = "{0} am {1}".format("i","lin") # 位置参数
print(str2) # 输出 i am lin  
str2 = "{a} am {b}".format(a="i",b="lin") # 关键字参数
print(str2) # 输出 i am linstr2 = "{0},{a} am {1} {b}".format("a","b",a="i",b="lin") # 混合用 format里 位置参数一定要先标注完
print(str2) # 输出 a,i am b linstr2 = "{0}:{1:.2f}".format("圆周率",3.14159) #  :后 .2f保留两位小数 浮点
print(str2) # 输出 圆周率:3.14 # % 格式化 类型和c语言一样
a = '%c' % 97
print(a) //输出 a ascii码 格式化成字符
str1 = "i am"
str2 = "lin"
print('%s %s' % (str1,str2)) # 输出 i am lin 字符串带格式拼接
#字符串拼接 简单用 + 带格式用上面这个 %  大量数据循环拼接用 字符串的join方法
sstr1 = ("i","am","lin")
str2 = ""
str2 = " ".join(str1)
print(str2) # 输出 i am lin#格式化操作符的一些辅助命令和c差不多 有个 #不一样
print('%#x' % 100) # 输出 0x64  八进制前面加 0o 十六进制前面加 0x

5.4 序列

上面这些统称为序列,这里介绍一些BIF。

  • list() 把一个迭代对象 转换成列表
  • tuple() 把一个迭代对象 转换成元组
  • str()把一个obj对象转换成字符串
  • len() 返回长度
  • max() 返回最大值,数据类型要统一
  • min()返回最小值,数据类型要统一
  • sum()返回总和,加上参数就是连参数一起求和
  • sorted()排序
  • reversed() 翻转序列 返回一个迭代对象
  • enumerate() 生成一个由迭代参数和对应元素组成的二元组 ,二元组数量按 最短长度
  • zip()返回多个参数组成的元组,二元组数量按 最短长度

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字IC后端实现教程| Clock Gating相关clock tree案例解析

今天小编给大家分享几个跟时钟树综合,clock tree相关的典型问题。 数字IC后端设计实现之分段长clock tree经典案例 Q1:星主好,下面的图是通过duplicate icg来解setup违例的示意图。我没看懂这个 duplicate操作在cts阶段是怎么实现的,用什么…

K8S学习之基础十一:k8s中容器钩子

容器钩子 容器钩子分为post-start和pre-stop post-start:容器启动后执行的命令 pre-stop:容器关闭前执行的命令,可用于优雅关闭 # 分别定义两个钩子,启动pod后更新index.html,关闭pod前正常关闭服务 vi post-pre.…

RabbitMQ知识点

1.为什么需要消息队列? RabbitMQ体系结构 操作001:RabbitMQ安装 二、安装 # 拉取镜像 docker pull rabbitmq:3.13-management ​ # -d 参数:后台运行 Docker 容器 # --name 参数:设置容器名称 # -p 参数:映射端口号&…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候,浏览器渲染引擎会根据标准之一的css基础盒模型,将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content,padding,border,margin 下…

利用Postman和Apipost进行API测试的实践与优化-动态参数

在实际的开发和测试工作中,完成一个API后对其进行简单的测试是一项至关重要的任务。在测试过程中,确保API返回的数据符合预期,不仅可以提高开发效率,还能帮助我们快速发现可能存在的问题。对于简单的API测试,诸如验证响…

【银河麒麟高级服务器操作系统实际案例分享】数据库资源重启现象分析及处理全过程

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…

C++ Primer 拷贝、赋值与销毁

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

Java面经

Java 知识点总结 1. 封装,继承和多态 封装: “高内聚,低耦合”,隐藏内部实现细节,只通过接口开放部分使用权限给外部。继承: 主要是提高代码复用性,通过子类继承父类,来增加功能扩…

常见的限流算法有哪些?

好的,关于这个问题,我会从几个方面来回答。 首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。 常见的限流算法有 5 种。 1. (如图)计数器限流&a…

GitHub获取token

获取token clone代码 git clone https://$tokengithub.com/*****/*****.git

公司网络安全组织结构

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 第17章 网络安全应急响应技术原理与应用 17.1 网络安全应急响应概述 居安思危,思则有备,有备无患。网络安全应急响应是针对潜在发生的网络…

《深度学习进阶》第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统

深度学习进阶 | 第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统 在深度学习的广阔领域中,强化学习(Reinforcement Learning, RL)是一种独特的范式,它通过智能体与环境…

【web前端开发】CSS--CSS简介及其编写位置(上)

1、CSS简介 (1)CSS的全称为:层叠式样式表(Cascading Style Sheets) (2)CSS也是一种标记语言,用于给HTML结构设置样式,例如:文字大小、颜色、元素宽度等等…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中,卷积神经网络(CNN) 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等,CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而,CNN 在捕捉全…

UE4 组件 (对话组件)

制作一个可以生成对话气泡,显示对话台词的简单组件。这个组件要的变量:台词(外部传入)。功能:开始对话(生成气泡UI) ,结束对话。 一、对话组件创建 二、开始对话事件 1、注意这里获…

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中 一、前言二、部署与发布基础概念2.1 部署的定义与目的2.2 发布的方式与渠道2.3 部署与发布的关键要素 三、WPF 应用程序打包3.1 使用 Visual Studio 自带的打包工具3.2 使用第三方打包工具 四、发布到不同…

Vue3自定义hooks

Vue3自定义hooks 什么是自定义hooks 把一个功能的所有数据和方法写到同一个ts文件里。 命名规范:useXxx,小驼峰。 在每一个hooks中,都可以写onMounted、computed等属性,互不干扰。 体现出了组合式AI的优势,一个功能的…

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面:为什么你需要这份教程? 当电脑频繁蓝屏、系统崩溃甚至无法开机时,重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点: ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!点我试试!! 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1.1…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…