Python 基础教程【3】:字符串、列表、元组

在这里插入图片描述

本文已收录于专栏
🌻
《Python 基础》

文章目录

  • 🌕1、字符串
    • 🥝1.1 字符串基本操作
      • 🍊1.1.1 字符串创建
      • 🍊1.1.2 字符串元素读取
      • 🍊1.1.3 字符串分片
      • 🍊1.1.4 连接和重复
      • 🍊1.1.5 关系运算
      • 🍊1.1.6 成员运算
    • 🥝1.2 字符串的常用方法
  • 🌕2、列表和元组
    • 🥝2.1 列表
      • 🍊2.1.1 列表的创建和下标访问
      • 🍊2.1.2 列表的切片操作
      • 🍊2.1.3 列表的遍历操作
      • 🍊2.1.4 列表的插入操作
      • 🍊2.1.5 列表的查找与删除
      • 🍊2.1.6 列表的拼接
    • 🥝2.2 元组

🌕1、字符串

Python 中的字符串是一个有序的字符集合,用于存储或表示基于文本的信息,它不仅能保存文本,而且能保存非打印字符或二进制数据

重点:

  • 双引号或者单引号中的数据,就是字符串
  • 如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符
  • 使用三个单引号、双引号定义的字符串可以包裹任意文本

🥝1.1 字符串基本操作

🍊1.1.1 字符串创建

使用赋值运算符 = 将一个字符串赋值给变量即可创建字符串对象

🍊1.1.2 字符串元素读取

使用索引可以直接访问字符串中的元素,方法为:字符串名称[索引]

🍊1.1.3 字符串分片

采取 字符串名称[开始索引;结束索引;步长] 的方法,从字符串中分离出部分字符

🍊1.1.4 连接和重复

连接: 可以使用运算符 + ,将两个字符串对象连接起来,得到一个新的字符串对象
重复: 使用运算符 * ,构建一个由字符串自身重复连接而成的字符串对象

比如: "hi"*3 输出的是 'hihihi'

🍊1.1.5 关系运算

单字符字符串的比较: 单个字符字符串是按照字符的 ASCII 码值大小进行比较的

多字符字符串的比较: 本质也是按照字符的 ASCII 码值大小进行比较的,先并行地检查两个字符串位于同一个位置的字符,如果这个同一位置的字符的 ASCII 码值大小相等,就向前推进,直到找到两个不同的字符为止

🍊1.1.6 成员运算

字符串使用 innot in 运算符判断一个字符串是否属于另一个字符串,

一般形式为 字符串1 [not] in 字符串2

返回值为 TrueFalse

🥝1.2 字符串的常用方法

str.find(substr,start,end)

在主串中查找子串,如果找到则返回子串在主串中的位置,找不到则返回 -1
substr 是要查找的子串,start 和 end 是可选项,分别表示查找的开始位置和结束位置

str.replace(old,new)

用字符串 new 替代 str 中的 old

str.split(sep)

以 sep 为分隔符,把 str 分离成一个列表

str.strip()

去掉 str 中两端空格

str.lower()

把 str 中所有大写字母转换为小写

str.upper

把 str 中所有小写字母转换为大写

🌕2、列表和元组

一个变量来表示很多个数据,类似于其他编程语言中的 “数组”

列表和元组,大部分的功能是差不多的,但是有一个功能是非常明显的 区别:

列表是可变的:创建好了之后,随时能改
元组是不可变的:创建好了之后,改不了,要想改,只能丢弃旧的,搞个新的

🥝2.1 列表

🍊2.1.1 列表的创建和下标访问

# 1.直接使用字面值来创建
#  [] 就表示一个 空的列表
a = []
print(type(a))  # 打印类型

# 2.使用 list() 来创建
b = list()
print(type(b))  # 打印类型

# 3. 可以在创建列表的时候,在 [] 中指定列表的初始值
#   元素之间使用 , 来分割
a = [1, 2, 3, 4]
print(a)

C++/Java 里面要求一个数组里只能存相同类型的变量,Python 里的 列表则无限制,放啥类型都可以

下标从 0 开始计数

🍊2.1.2 列表的切片操作

# 1.切片操作的基本使用
a = [1, 2, 3, 4]
print(a[1:3])   # 输出 [2, 3]

切片操作里,[] 里面有两个数字,表示了一段区间,

1:3
取到下标为 1 一直到 下标为 3 的元素
(包含1,不包含3)
[1,3)

# 2. 使用切片的时候,省略边界
a = [1, 2, 3, 4]
# 省略后边界,意思是从开始位置,一直取到整个列表结束
print(a[1:])
# 省略前边界,意思是从列表的 0号元素开始,一直取到结束的后边界
print(a[:2])
# 此处切片中的下标也可以写成负数
print(a[:-1])  # 输出 [1, 2, 3] 打印到倒数第2个元素
# 还可以把开始边界和结束边界都省略掉!得到的是列表自身
print(a[:])

切片的操作是一个比较高效的操作, 进行切片的时候,只是取出了原有列表中的一个部分,并不涉及到 “数据的拷贝”,假如有一个很大的列表,进行切片,切片的范围很大,即使如此,切片操作仍然非常高效

# 3. 带有步长的切片操作
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::1])  # 输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::2])  # 输出[1, 3, 5, 7, 9]

切片操作,还可以指定 “步长”

步长的数值还可以是负数,当步长为负数的时候,意思是从后往前来取元素

当切片中的范围超出有效下标之后,不会出现异常!而是尽可能把符合要求的元素获取到

🍊2.1.3 列表的遍历操作

# 1.使用for循环来遍历列表
a = [1, 2, 3, 4, 5]
for elem in a:
    print(elem)
    
# 2.使用for循环遍历,通过下标的方式
a = [1, 2, 3, 4, 5]
for i in range(0, len(a)):
    a[i] = a[i] + 10
    print(a[i])
    
# 3.使用while循环,通过下标遍历
a = [1, 2, 3, 4, 5]
i = 0
while i < len(a):
    print(a[i])
    i += 1

第一种方法是把列表中的元素赋给elem,不能修改列表值,第二、三种可以利用下标修改列表值

🍊2.1.4 列表的插入操作

# 1.使用 append 往列表末尾新增一个元素
a = [1, 2, 3, 4, 5]
a.append(5)

# 2.使用 insert 方法,往列表的任意位置新增元素
a = [1, 2, 3, 4]
a.insert(1, 'hello')
a.insert(100, 'hello')  # 不会放在第101个位置,而是末尾

🍊2.1.5 列表的查找与删除

查找:

# 1.使用 in 来判定某个元素是否在列表中存在
a = [1, 2, 3, 4]
print(1 in a)   # in 在列表中打印 True
print(10 in a)  # in 不在列表中打印 False
print(1 not in a)
print(10 not in a)

# 2.使用 index 方法,来判定,当前元素在列表中的位置,得到一个下标 
a = [1, 2, 3, 4]
print(a.index(2))
print(a.index(10))   # 不存在,引发异常

删除:

# 1.使用 pop 删除列表中最末尾的元素
a = [1, 2, 3, 4]
a.pop()
print(a)

# 2.使用 pop 还能删除任意位置的元素,pop 的参数可以传一个下标过去
a = [1, 2, 3, 4]
a.pop(1)
print(a)

# 3.使用 remove 方法,可以按照值来进行删除
a = ['aa', 'bb', 'cc', 'dd']
a.remove('cc')
print(a)

🍊2.1.6 列表的拼接

# 1.使用 + 针对两个列表进行拼接
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = b + a
print(c)
print(a)
print(b)

# 2.使用 extend 来进行拼接
# 这个拼接是把后一个列表的内容拼接到前一个列表里头,即会修改前一个列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)  # extend没有返回值
print(a)
print(b)

# 3.使用 += 进行拼接
a = [1, 2, 3]
b = [4, 5, 6]
a += b  # 等价于 a = a + b
print(a)
print(b)

使用 + 进行拼接的时候,只是针对当前列表的内容生成了一个更大的新的列表,原有列表是不变的

🥝2.2 元组

创建元组

# 1.创建元组
a = ()
print(type(a))
b = tuple()
print(type(b))

# 2.创建元组的时候指定初始值
a = (1, 2, 3, 4)
print(a)

元组中的元素也可以是任意类型的

a = (1, 2, 3, 4)
print(a[1])
print(a[-1])

通过下标来访问元组中的元素,下标也是从 0 开始,到 len - 1 结束

a = (1, 2, 3, 4)
print(a[1:3])

通过切片来获取元组中的一个部分

也同样可以使用 for 循环等方式进行遍历元素

可以使用 in 来判定元素是否存在,使用 index 查找元素的下标

可以使用 + 来拼接两个元组

元组只支持 “读” 操作,不支持 “修改” 类操作

当进行多元赋值的时候,其实本质上是按照元组的方式来进行工作的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java序列化与反序列化

优秀博文&#xff1a;IT-BLOG-CN 序列化&#xff1a;把对象转换为字节序列存储于磁盘或者进行网络传输的过程称为对象的序列化。 反序列化&#xff1a;把磁盘或网络节点上的字节序列恢复到对象的过程称为对象的反序列化。 一、序列化对象 【1】必须实现序列化接口Serializabl…

RK3568平台开发系列讲解(驱动基础篇)I2C协议介绍

🚀返回专栏总目录 文章目录 一、I2C基本读写过程二、通讯的起始和停止信号三、数据有效性四、地址及数据方向五、响应沉淀、分享、成长,让自己和他人都能有所收获!😄 📢I2C的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节。 一、…

《网络安全入门到精通》 - 2.1 - Windows基础 - DOS命令Windows防火墙Windows共享文件

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「订阅专栏」&#xff1a;此文章已录入专栏《网络安全入门到精通》 Windows基础一、DOS命令1、目录文件操作dir 列出目录文件cd 切换目录md 创建目录rd 删除目录move 移动文件或目…

4.网络爬虫—Post请求(实战演示)

网络爬虫—Post请求实战演示POST请求GET请求POST请求和GET请求的区别获取二进制数据爬[百度官网](https://www.baidu.com/)logo实战发送post请求百度翻译实战使用session发送请求模拟登录17k小说网常见问题前言&#xff1a; &#x1f4dd;​&#x1f4dd;​此专栏文章是专门针对…

数据结构笔记

文章目录第一章&#xff1a;数据结构与算法第二章&#xff1a;稀疏数组和队列一 、稀疏sparsearray 数组&#xff08;一&#xff09;案例需求&#xff08;二&#xff09;稀疏数组介绍&#xff08;三&#xff09;应用实列&#xff08;四&#xff09;代码实现二、队列&#xff08…

动态规划算法

一、前言动态规划是一种常用的算法&#xff0c;在算法领域十分重要&#xff0c;但对于新手来说&#xff0c;理解起来有一定的挑战性&#xff0c;这篇博客将明确步骤来一步一步讲解动态规划到底该如何理解与运用。二、解析动态规划算法1.特点①把原来的问题分解成了【要点相同】…

【Linux】软件包管理器 yum

什么是软件包和软件包管理器 在 Linux 下需要安装软件时&#xff0c; 最原始的办法就是下载到程序的源代码&#xff0c; 进行编译得到可执行程序。但是这样太麻烦了&#xff0c;所以有些人就把一些常用的软件提前编译好, 做成软件包 ( 就相当于windows上的软件安装程序)放在服…

Spring框架中IOC和DI详解

Spring框架学习一—IOC和DI 来源黑马Spring课程&#xff0c;觉得挺好的 目录 文章目录Spring框架学习一---IOC和DI目录学习目标第一章 Spring概述1、为什么要学习spring&#xff1f;2、Spring概述【了解】【1】Spring是什么【2】Spring发展历程【3】Spring优势【4】Spring体系…

java线程之Thread类的基本用法

Thread类的基本用法1. Thread类的构造方法2. Thread的几个常见属性常见属性线程中断等待一个线程小鱼在上一篇博客详细的讲解了如何创建线程,java使用Thread类来创建多线程,但是对于好多没有相关经验的人来说,比较不容易理解的地方在于操作系统调度的执行过程. 我们通过下面代码…

Tomcat部署及优化

目录 1.Tomcat概述 1.Tomcat的概念 2、Tomcat的核心组件 3.Java Servlet 的概念 4.JSP的概念 5.Tomcat中最顶层的容器------server 6.四个子容器的作用 7.Tomcat请求过程 2.Tomcat服务部署 1.Tomcat服务部署的步骤 2.实例操作&#xff1a;Tomcat服务部署 3.Tomcat 虚拟主机配置…

数据清洗是清洗什么?

在搭建数据中台、数据仓库或者做数据分析之前&#xff0c;首要的工作重点就是做数据清洗&#xff0c;否则会影响到后续对数据的分析利用。那么数据清洗到底是做什么事情呢&#xff1f;今天我就来跟大家分享一下。 数据清洗的基本概念 按百度百科给出的解释&#xff0c;“数据清…

Java之链表(不带头结点,带头结点,迭代实现,递归实现)

目录 一.链表 1.什么是链表 2.链表的分类 二.不带头结点单向链表的非递归实现 1.接口的定义 2. 不带头结点单向链表的结构 3.链表的添加操作(头插法和尾插法) 1.头插法 2.尾插法 4. 链表的插入操作 5.链表的删除操作 1.删除指定索引的结点 2.删除指定值的第一个结点…

一文带你领略 WPA3-SAE 的 “安全感”

引入 WPA3-SAE也是针对四次握手的协议。 四次握手是 AP &#xff08;authenticator&#xff09; 和 &#xff08;supplicant&#xff09;进行四次信息交互&#xff0c;生成一个用于加密无线数据的秘钥。 这个过程发生在 WIFI 连接 的 过程。 为了更好的阐述 WPA3-SAE 的作用 …

Thread的小补丁

Thread小补丁线程状态NewRunnableWaitingTimed_waitingBlocked线程安全线程的抢占式执行同时对同一个变量进行修改指令重排序操作不是原子的解决方案万恶之源优化我们自己的代码Synchronized和Volatile上一篇博客中,我们简单介绍了线程Thread的一些知识,一些基本的使用,但是单单…

数据结构和算法(1):数组

目录概述动态数组二维数组局部性原理越界检查概述 定义 在计算机科学中&#xff0c;数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识 In computer science, an array is a data structure consisting of a col…

文心一言发布,你怎么看?chatGPT

百度全新一代知识增强大语言模型“文心一言”于2021年3月16日正式发布&#xff0c;作为一款自然语言处理技术&#xff0c;它引起了广泛的关注和讨论。 首先&#xff0c;文心一言是一款具有重大意义的自然语言处理技术。在人工智能领域&#xff0c;自然语言处理技术一直是一个难…

PyTorch 之 神经网络 Mnist 分类任务

文章目录一、Mnist 分类任务简介二、Mnist 数据集的读取三、 Mnist 分类任务实现1. 标签和简单网络架构2. 具体代码实现四、使用 TensorDataset 和 DataLoader 简化本文参加新星计划人工智能(Pytorch)赛道&#xff1a;https://bbs.csdn.net/topics/613989052 一、Mnist 分类任…

Lambda表达式

第一章 Java为什么引入 Lmabda表达式目的尽可能轻量级的将代码封装为数据1.1 什么是Lambda表达式Lambda表达式也被成为箭头函数、匿名函数、闭包 Lambda表达式体现的是轻量级函数式编程思想 ‘->’符号是Lambda表达式的核心符号&#xff0c;符号左侧是操作参数&#xff0c;符…

YOLOv8 多目标跟踪

文章大纲 简介环境搭建代码样例跟踪原理代码分析原始老版实现新版本封装代码实现追踪与计数奇奇怪怪错误汇总lap 安装过程报错推理过程报错参考文献与学习路径简介 使用yolov8 做多目标跟踪 文档地址: https://docs.ultralytics.com/modes/track/https://github.com/ultralyt…

【多线程】多线程案例

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; ✨每日一语&#xff1a;we can not judge the value of a moment until it becomes a memory. 目 录&#x1f35d;一. 单例模式&#x1f364;1. 饿汉模式实现&#x1f9aa;2. 懒汉模…