Python学习打卡:day07

news2024/11/24 19:34:31

day7

笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了

目录

  • day7
    • 53、列表的常用操作课后练习题
    • 54、列表的循环遍历
      • 列表的遍历—— while 循环
      • 列表的遍历—— for 循环
      • while 循环和 for 循环的对比
      • 练习
    • 55、元组的定义与操作
      • 元组的定义
      • 元组的相关操作
      • 元组的相关操作——注意事项
      • 元组的遍历
      • 元组的特点
    • 56、字符串的定义和操作
      • 字符串的下标(索引)
      • 字符串的常用操作
      • 字符串常用操作汇总
      • 字符串的遍历
        • while 循环
        • for 循环
      • 字符串的特点
    • 57、字符串的课后练习

53、列表的常用操作课后练习题

# 定义这个列表,并用变量接收它
list = [21, 25, 21, 23, 22, 20]
print(f"列表为 {list}")

# 追加一个数字31,到列表的尾部
list.append(31)
print(f"追加数字 31 后,列表为: {list}")

# 追加一个新列表[29, 33, 30],到列表的尾部
list2 = [29, 33, 30]
list.extend(list2)
print(f"追加新列表[29,33,30]后,列表为: {list}")

# 取出第一个元素(应是:21)
num1 = list[0]
print(f"第一个元素是: {num1}")

# 取出最后一个元素(应是:30)
num2 = list[-1]
print(f"最后一个元素是: {num2}")

# 查找元素31,在列表中的下标位置
index = list.index(31)
print(f"元素 31 在列表中的下标位置: {index}")

54、列表的循环遍历

列表的遍历—— while 循环

既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。

将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。

  • 如何遍历列表的元素呢?

    • 可以使用前面学过的while循环
  • 如何在循环中取出列表的元素呢?

    • 使用列表[下标]的方式取出
  • 循环条件如何控制?

    • 定义一个变量表示下标,从0开始

    • 循环条件为 下标值 < 列表的元素数量

基本语法格式:
在这里插入图片描述

示例:

def list_while_func():
    """
    使用 while 循环遍历列表的演示函数
    :return: None
    """
    mylist = ["传智教育", "黑马程序员", "Python"]
    # 循环控制变量通过下标索引来控制,默认0
    # 每次循环将下标索引变量 +1
    # 循环条件:下标索引变量 < 列表的元素数量

    # 定义一个变量来标记列表的下标
    index = 0   # 初始值为 0
    while index < len(mylist):
        # 通过 index 变量取出对应下标的元素
        element = mylist[index]
        print(f"列表的元素:{element}")

        # 至关重要,将循环变量(index)每一次循环都 + 1
        index += 1
        
list_while_func()

列表的遍历—— for 循环

除了while循环外,Python中还有另外一种循环形式:for循环。

对比while,for循环更加适合对列表等数据容器进行遍历。

基本语法格式:
在这里插入图片描述

表示,从容器内,依次取出元素并赋值到临时变量上。

在每一次的循环中,我们可以对临时变量(元素)进行处理。

示例:

def list_for_func():
    """
    使用 for 循环遍历列表的演示函数
    :return: None
    """
    mylist = [1, 2, 3, 4, 5]
    # for 临时变量 in 数据容器:
    for element in mylist:
        print(f"列表的元素有:{element}")

list_for_func()

while 循环和 for 循环的对比

while循环和for循环,都是循环语句,但细节不同:

  • 在循环控制上:

    • while 循环可以自定循环条件,并自行控制;

    • for循环不可以自定循环条件,只可以一个个从容器内取出数据;

  • 在无限循环上:

    • while循环可以通过条件控制做到无限循环

    • for循环理论上不可以,因为被遍历的容器容量不是无限的;

  • 在使用场景上:

    • while 循环适用于任何想要循环的场景;

    • for循环适用于,遍历数据容器的场景或简单的固定次数循环场景。

练习

在这里插入图片描述

mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# while 循环
def while_func():
    index = 0
    mylist2 = []
    while index < len(mylist):
        if(mylist[index] % 2 == 0):
            mylist2.append(mylist[index])
        index += 1
    print(f"mylist 中的偶数为:{mylist2}")

def for_func():
    index1 = 0
    mylist2 = []
    for element in mylist:
        if element % 2 == 0:
            mylist2.append(element)
    print(f"mylist 中的偶数为:{mylist2}")

while_func()
for_func()

55、元组的定义与操作

元组同列表一样,都是可以封装多个、不同类型的元素在内。

但最大的不同点在于:

元组一旦定义完成,就不可修改

所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了

元组的定义

定义元组使用小括号,且使用逗号隔开各个数据数据可以是不同的数据类型
在这里插入图片描述

示例:

# 定义元组
t1 = (1, "Hello", True)
t2 = ()
t3 = tuple()
print(f"t1 的类型是:{type(t1)},内容是:{t1}")
print(f"t2 的类型是:{type(t2)},内容是:{t2}")
print(f"t3 的类型是:{type(t3)},内容是:{t3}")

tips元组只有一个数据,这个数据后面要添加逗号
在这里插入图片描述

示例:

# 定义单个元素的元组
t4 = ("hello",)
print(f"t4 的类型是: {type(t4)}, t4的内容是: {t4}")

元组也支持嵌套
在这里插入图片描述

示例:

# 元素的嵌套
t5 = ((1, 2, 3), (4, 5, 6))
print(f"t5 的类型是: {type(t5)}, t5的内容是: {t5}")

元组的相关操作

编号方法作用
1index()查找某个数据,如果数据存在返回对应的下标,否则报错
2count()统计某个数据在当前元组出现的次数
3len(元组)统计元组内的元素个数

示例:

# 下标索引取出内容
num = t5[1][2]
print(f"从嵌套元组中取出的数据是:{num}")

# 元组的操作: index 查找方法
t6 = ("传智教育", "黑马程序员", "Python")
index = t6.index("黑马程序员")
print(f"在元组 t6 中查找黑马程序员,下标是: {index}")

# 元组的操作: count 统计方法
t7 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "Python")
num = t7.count("黑马程序员")
print(f"在元组 t7 中统计黑马程序员的数量有: {num}个")
# 元组的操作: len 函数统计元组元素数量
t8 = ("传智教育", "黑马程序员", "黑马程序员", "黑马程序员", "Python")
num = len(t8)
print(f"在元组 t8 中元素有: {num}个")

元组的相关操作——注意事项

  • 不可以修改元组的内容,否则会直接报错;
  • 可以修改元组内的 list 的内容(修改元素、增加、删除、反转等);
  • 不可以替换 list 为其它 list 或其它类型。
# error: 修改元组的内容
# t8[0] = "itcast"

元组的遍历

同列表一样,元组也可以被遍历。

可以使用while循环和for循环遍历它

# 元组的遍历: while
index = 0
while index < len(t8):
    print(f"1元组的元素有: {t8[index]}")
    # 至关重要
    index += 1

# 元组的遍历: for
for element in t8:
    print(f"2元组的元素有: {element}")

元组的特点

  1. 可以容纳多个数据;
  2. 可以容纳不同类型的数据(混装);
  3. 数据是有序存储的(下标索引);
  4. 允许重复数据存在;
  5. 不可以修改(增加或删除元素等,但是可以修改内部list的内部元素)
  6. 支持for循环。

示例:

# 定义一个元组
# 修改元组里面列表元素的内容
t9 = (1, 2, ["itheima", "itcast"])
print(f"t9 的内容是: {t9}")
t9[2][0] = "黑马程序员"
t9[2][1] = "chuanzhijiaoyu"
print(f"t9 的内容是: {t9}")

56、字符串的定义和操作

字符串是字符的容器,一个字符串可以存放任意数量的字符。

如,字符串:“itheima”
在这里插入图片描述

字符串的下标(索引)

和其它容器如:列表、元组一样,字符串也可以通过下标进行访问

  • 从前向后,下标从0开始
  • 从后向前,下标从-1开始
    在这里插入图片描述

示例:

my_str = "itheima and itcast"
# 通过下标索引取值
value = my_str[2]
value2 = my_str[-16]
print(f"从字符串{my_str}取下标为2的元素的值是:{value},取下标为-16的元素的值是:{value2}")

同元组一样,字符串是一个:无法修改的数据容器。

所以:

  • 修改指定下标的字符 (如:字符串[0] = “a”)
  • 移除特定下标的字符 (如:del 字符串[0]、字符串.remove()、字符串.pop()等)
  • 追加字符等 (如:字符串.append())

均无法完成。如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改

示例:

error 修改字符串的值
my_str[2] = "H"

字符串的常用操作

  1. 查找特定字符串的下标索引值

    语法:字符串.index(字符串)
    在这里插入图片描述

  2. 字符串的替换

    **语法:字符串.replace(字符串1,字符串2);**
    
    功能:将字符串内的全部:字符串1,替换为字符串2;
    
    注意:不是修改字符串本身,而是得到了一个新字符串;
    

在这里插入图片描述

可以看到,==字符串name本身并没有发生变化,而是得到了一个新字符串对象==。

所以结果要用新的字符串变量接收。
  1. 字符串的分割

    **语法:字符串.split(分隔符字符串)**;
    
    功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中;
    
    ==注意:字符串本身不变,而是得到了一个列表对象;==
    

在这里插入图片描述

   可以看到,字符串按照给定的 <空格> 进行了分割,变成多个子字符串,并存入一个列表对象中。
  1. 字符串的规整操作(去前后空格)

    语法:字符串.strip()
    在这里插入图片描述

    字符串的规整操作(去前后指定字符串)

    语法:字符串.strip(字符串)

    在这里插入图片描述

    注意,传入的是“12” 其实就是:”1”和”2”都会移除,是按照单个字符。

  2. 统计字符串中某字符串的出现次数

    语法:字符串.count(字符串)
    在这里插入图片描述

  3. 统计字符串的长度

    语法:len(字符串)

    可以看出:

    • 数字(1、2、3…)
    • 字母(abcd、ABCD等)
    • 符号(空格、!、@、#、$等)
    • 中文

    均算作1个字符

    所以上述代码,结果20

字符串常用操作汇总

编号操作说明
1字符串[下标]根据下标索引取出特定位置字符
2字符串.index(字符串)查找给定字符的第一个匹配项的下标
3字符串.replace(字符串1, 字符串2)将字符串内的全部字符串1,替换为字符串2 不会修改原字符串,而是得到一个新的
4字符串.split(字符串)按照给定字符串,对字符串进行分隔 不会修改原字符串,而是得到一个新的列表
5字符串.strip() 字符串.strip(字符串)移除首尾的空格和换行符或指定字符串
6字符串.count(字符串)统计字符串内某字符串的出现次数
7len(字符串)统计字符串的字符个数

字符串的遍历

while 循环

在这里插入图片描述

for 循环

在这里插入图片描述

字符串的特点

作为数据容器,字符串有如下特点:

  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增加或删除元素等)
  • 支持for循环

基本和列表、元组相同

不同于列表和元组之处在于:字符串容器可以容纳的类型是单一的,只能是字符串类型。

不同于列表,相同于元组的在于:字符串不可修改

总体示例:

"""
演示以数据容器的角色,学习字符串的相关操作
"""
my_str = "itheima and itcast"
# 通过下标索引取值
value = my_str[2]
value2 = my_str[-16]
print(f"从字符串{my_str}取下标为2的元素的值是:{value},取下标为-16的元素的值是:{value2}")

# error 修改字符串的值
# my_str[2] = "H"

# index 方法
value = my_str.index("and")
print(f"在字符串{my_str}中查找 and,其起始下标是:{value}")

# replace 方法
new_my_str = my_str.replace("it", "程序")
print(f"将字符串{my_str},进行替换后得到:{new_my_str}")

# split 方法
my_str = "hello python itheima itcast"
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行split切割后得到:{my_str_list}, 类型是:{type(my_str_list)}")

# strip 方法
my_str = "  itheima and itcast  "
new_my_str = my_str.strip()     # 不传入参数,去除首尾空格
print(f"字符串{my_str}被 strip 后,结果:{new_my_str}")

my_str = "12itheima and itcast21"
# 注意,传入的是 "12",其实就是:"1" 和 "2" 都会移除,是按照单个字符。
new_my_str = my_str.strip("12")     # 不传入参数,去除首尾空格
print(f"字符串{my_str}被 strip('12') 后,结果:{new_my_str}")

# 统计字符串中某字符串的出现次数
my_str = "itheima and itcast"
count = my_str.count("it")
print(f"字符串{my_str}中 it 出现的次数是:{count}")

# 统计字符串的长度
num = len(my_str)
print(f"字符串{my_str}的长度是:{num}")

57、字符串的课后练习

在这里插入图片描述

my_str = "itheima itcast boxuegu"
count = my_str.count("it")
print(f"{my_str}中 'it' 的出现次数为:{count}")

my_str1 = my_str.replace(" ", "|")
print(f"{my_str}中将空格换为'|'后结果为:{my_str1}")

my_str2 = my_str1.split("|")
print(f"{my_str}中按照'|'分割后结果为:{my_str2}")

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

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

相关文章

回归预测 | Matlab实现NGO-HKELM北方苍鹰算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现NGO-HKELM北方苍鹰算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现NGO-HKELM北方苍鹰算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现NGO-HKELM北方苍鹰算法优化混合核极限…

Kotlin 协程真的轻量吗?

前言 在官方文档的介绍中,提到了: 协程是轻量的 并给出了一个例子: fun main() = runBlocking {repeat(50_000) {// 启动大量的协程launch {delay

模型算法—线性回归

线性回归是统计学中最常见的一种回归分析方法&#xff0c;用于建立自变量&#xff08;解释变量&#xff09;和因变量&#xff08;响应变量&#xff09;之间的线性关系。线性回归模型可以用来预测一个或多个自变量对应的因变量的值。 线性回归的基本形式如下&#xff1a; &…

【麒麟虚拟机】NetworkManager没有运行

麒麟V10 建linux麒麟虚拟机&#xff0c;发现&#xff0c;网络没有配置 提示&#xff0c;NetworkManager没有运行。编辑联接也不能配置 解决方法&#xff0c;在终端输入命令&#xff1a; sudo systemctl start NetworkManager 启动以后&#xff0c;编辑连接选自动以太网&…

从 Linux 逻辑地址 线性地址 物理地址 内存管理设计,感受Linux kernel 设计的精妙

1&#xff0c;机器解析的思路 发现网络上大量的教程&#xff0c;多是以讹传讹地讲解 Linux 内存管理&#xff1b; 都是在讲&#xff1a; 逻辑地址 -> 线性地址 -> 物理地址 如果谙熟 Linux 制定的GPT和编译原理或对二进制分析比较熟练的话&#xff0c;会发现线性地…

[AIGC] Python的Range函数

Python的range()函数是一个内置函数&#xff0c;常常用于编程中生成数列。这个函数可以生成一个整数序列&#xff0c;这个序列通常用在循环中。 文章目录 基本用法详细用法注意事项 基本用法 range()函数的基本形式为 range(stop) —— 这将生成一个从0开始&#xff0c;到stop…

js 用正则表达式 匹配自定义字符之间的字符串数据,如:( )、[ ]、{ }、< >、【】等括号之间的字符串数据

要使用正则表达式匹配尖括号()之间的数据&#xff0c;可以使用以下代码示例&#xff1a; 在JavaScript中&#xff0c;你可以使用正则表达式来匹配括号()之间的数据。以下是一个简单的例子&#xff0c;它展示了如何使用正则表达式来获取两对括号之间的文本。 // 示例字符串 con…

5.3.1_2 二叉树的层次遍历

&#x1f44b; Hi, I’m Beast Cheng&#x1f440; I’m interested in photography, hiking, landscape…&#x1f331; I’m currently learning python, javascript, kotlin…&#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

17个关键方法指南,保护您的web站点安全!

了解如何让您的web应用程序或网站安全&#xff0c;对于网站所有者来说至关重要。以下是一些关键步骤&#xff0c;可以帮助您保护网站免受攻击和数据泄露。 1.使用公钥加密技术 当数据以明文形式传输时&#xff0c;它容易受到中间人 &#xff08;MitM&#xff09; 攻击。这意味…

System-Verilog 实现DE2-115流水灯

文章目录 一、 SystemVerilog1. SystemVerilog简介2. 基本语法和特性 二、实验过程hello.v文件引脚分配 三、实验效果参考 一、 SystemVerilog 1. SystemVerilog简介 SystemVerilog是一种高级的硬件描述语言&#xff08;HDL&#xff09;&#xff0c;它不仅继承了Verilog语言的…

SpringBoot实现的大文件上传

前言 大文件分片上传和断点续传是为了解决在网络传输过程中可能遇到的问题&#xff0c;以提高文件传输的效率和稳定性。 首先&#xff0c;大文件分片上传是将大文件分割成较小的片段进行上传。这样做的好处是可以减少单个文件的传输时间&#xff0c;因为较小的文件片段更容易快…

vcomp140.dll丢失原因与vcomp140.dll,无法继续执行代码的修复办法详解

vcomp140.dll 是一个动态链接库&#xff08;Dynamic Link Library&#xff0c;DLL&#xff09;文件&#xff0c;它在 Windows 操作系统中扮演着关键角色。该文件通常位于系统的标准目录 C:\Windows\System32 下&#xff0c;由微软公司开发并随特定版本的 Windows 或相关软件包一…

kubeadm快速部署K8S

目录 一、kubeadm安装K8S 1.1 环境准备 1.2 初始化配置 1.3 所有节点安装docker 1.3.1 安装依赖环境和docker 1.3.2 定义docker 配置文件 1.3.3 重启并开机自启docker 1.3.4 查看docker 是否配置成功 1.4 master、node01 、node02安装kubeadm&#xff0c;kubelet和kub…

CSS 实现个人资料卡

CSS 实现个人资料卡 效果展示 CSS 知识点 CSS 综合知识运用 页面整体布局 <div class"card"><div class"imgBox"><img src"./bg.jpg" /></div><div class"content"><div class"details&quo…

PCB设计简介

PCB电路板各层的含义 A. Signal And Plane Layers(S) 1. Signal Layers(信号层): 信号层主要用于布置电路板上的导线。Altium Designer提供了32个信号层&#xff0c;包括Top layer(顶层)&#xff0c;Bottom layer(底层)和32个内电层。 包括&#xff1a;Top layer(顶层),Bott…

PAT B1026. 程序运行时间

题目描述 要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock(&#xff09;函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK——给出了机器时钟每秒所走的时钟打点数…

Harbor镜像中心搭建

文章目录 Harbor镜像中心搭建前置条件下载Harbor创建CA证书配置Harbor开始启动地址映射访问配置本地登录配置外部虚拟机访问 Harbor镜像中心搭建 Harbor是一个镜像中心&#xff0c;我们所熟知的DockerHub就是一个镜像中心&#xff0c;我们可以把我们打包的镜像放在镜像中心中供…

Proteus 新建工程

Proteus 新建工程 新建简单工程 首先在File工具栏中点击New Project&#xff0c;弹出新建工程向导程序(New Proteus Wizard) 填写工程名称与存储路径&#xff0c;选择New Proteus并点击Next进行下一步设置 我们不需要生成PCB文件&#xff0c;一路默认&#xff0c;点击Next即…

基于springboot实现火锅店管理系统项目【项目源码+论文说明】

基于springboot实现火锅店管理系统演示 摘要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装火锅店管理系统软件来…

篮球杯小白+强者

2. 宣读数字【算法赛】 思维题&#xff0c;注意到完全平方数的约数是奇数个&#xff0c;其余都是偶数个。 #include <bits/stdc.h>using namespace std;#define LL long long#define pb push_back#define x first#define y second #define int long long #define endl \n…