Python零基础入门教程05 字符串和列表以及元组

前言

学无止境,无止境学。大家好,我是张大鹏,之前在抖音有5万多粉丝,不过现在不拍视频,专心写公众号了。笔者目前是高级Python工程师,之前是全栈工程师,主要擅长Golang和Python开发,对于JavaVue,React也有一些研究。工作之余,喜欢学习和分享,希望能够通过此公众号”张大鹏520″,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。

今天要给大家分享的是《Python零基础入门教程05 字符串和列表以及元组》,这是一个系列的教程,从零基础到项目实战。在本教程中,我会给大家介绍Python中的字符串和列表以及元组,他们都是序列类型,有很多相似的地方,所以放在一起讲。还会配套相关的练习,大家学完以后可以自行通过练习题巩固和加深对知识点的理解。

如果大家需要本教程的PDF电子书或者完整的源码,可以在文末找到获取方式哈。

01 字符串

字符串的定义

Python是我见过的定义字符串方式最多的一种编程语言,常见的就有以下几种:

  • 使用单引号
  • 使用双引号
  • 使用三单引号
  • 使用三双引号
  • 使用f字符串
  • 使用百分号字符串

示例代码:字符串的定义

# 使用单引号
s1 = '大鹏'
print(s1, type(s1))

# 使用双引号
s2 = "李四"
print(s2, type(s2))

# 使用三单引号
s3 = '''你好啊'''
print(s3, type(s3))

# 使用三双引号
s4 = """嘿嘿嘿"""
print(s4, type(s4))

# 使用f字符串
s5 = f"{s4},惊呆了,Python居然有这么多种定义字符串的方式"
print(s5, type(s5))

# 使用百分号字符串
s6 = "%s:你真的是个秀儿" % s2
print(s6, type(s6))

字符串的输入输出

这个咱们已经用过很多次了,使用input函数输入数据,使用print函数输出数据。

示例代码:

name = input("请输入你的名字:")
print(f"你的名字是:{name}")

字符串的下标

字符串是一种特殊的序列,由字符组成。不过Python中没有字符这种类型,可以看成是单个字符串。也是因为字符串是一种序列类型,可以字符串是有下标的,也可以进行切片。

示例:查看字符串的下标

s = "abc"

# 方法1:自己数
print(s[0], s[1], s[2])

# 方法2:使用for遍历
for i in range(len(s)):
    print(i, s[i])

字符串的切片

切片是Python中非常重要的一个特性,也Python中处理序列类型数据非常灵活的一种方式。切片的基本语法为:

序列对象[开始下标:结束下标:步长]

其中:

  • 开始下标的默认值是0
  • 结束下标的默认值是-1
  • 步长的默认值是1

也就是说,arr[:]相当于arr[0:-1:1],不过不太一样的是,arr[:]能够切取整个数组。

常见的切片方式有:

  • 截取指定内容:arr[开始下标:结束下标]
  • 从指定下标截取到末尾:arr[开始下标:]
  • 从开始截取到指定下标:arr[:结束下标]
  • 让字符串逆序:arr[::-1]

示例代码:

s = "abcdefghijklmnopqrstuvwxyz"

# 截取片段
print(s[3:5])

# 从指定下标截取到末尾
print(s[11:])

# 截取到指定下标
print(s[:3])

# 字符串逆序
print(s[::-1])

字符串查找方法

字符串内置了很多的便捷方法,其中包括如下常用的查找方法:

  • find:查找子串在字符串中第一次出现的下标,找不到返回-1
  • index:查找子串在字符串中第一次出现的下标,找不到会抛出异常
  • count:查找子串在字符串中的出现次数
  • rfind:从字符串右边开始查找子串在字符串中第一次出现的下标,找不到返回-1
  • rindex:从字符串右边开始查找子串在字符串中第一次出现的下标,找不到会抛出异常

示例代码:

s = "abcabcabcabcabcabc"

# 从左边查找子串的索引
print(s.index("c"))
print(s.find("c"))

# 从右边查找字符串的索引
print(s.rindex("c"))
print(s.rfind("c"))

# 统计子串的次数
print(s.count("ab"))

字符串常用修改方法

字符串除了查找方法,还提供了几个修改方法,这几个方法非常的常用,建议记住:

  • replace:替换字符串中的子串为新的子串
  • split:将字符串按照指定的分隔符拆分为字符串列表
  • join:将字符串列表按照指定的连接符号合并为字符串

示例:字符串替换

# 替换
s = "python入门教程【广告内容】.mp4"
s = s.replace("【广告内容】""")
print(s)

示例:字符串分割

# 分割
s = "张三,33,男"
s = s.split(",")
print(f"姓名:{s[0]},年龄:{s[1]},性别:{s[2]}")

示例:字符串合并

# 合并
s = ["张三""33""男"]
s = ",".join(s)
print(s)

字符串其他修改方法

除了上面说的三个修改方法以外,字符串还有一些可能会用到的修改方法:

  • capitalize:字符串首字母大写
  • title:字符串每个单词首字母大写
  • upper:字符串全大写
  • lower:字符串全小写
  • lstrip:删除字符串左边空白字符
  • rstrip:删除字符串右边空白字符串
  • strip:删除字符串左右两边空白字符

示例代码:

# capitalize:字符串首字母大写
print("hello".capitalize())

# title:字符串每个单词首字母大写
print("hello world".title())

# upper:字符串全大写
print("abc".upper())

# lower:字符串全小写
print("AbC".lower())

# lstrip:删除字符串左边空白字符
print("    abc".lstrip())

# rstrip:删除字符串右边空白字符串
print("abc      ".rstrip())

# strip:删除字符串左右两边空白字符
print("    abc     ".strip())

字符串的判断方法

字符串还提供了一些判断方法,偶尔会用到:

  • startswith:判断是否以某个字符串开头
  • endswith:判断是否以某个字符串结尾
  • isalpha:判断是否为字母
  • isdigit:判断是否为数字
  • isalnum:判断是否为字母加数字的组合
  • ispace:判断是否为空白字符

示例代码:

# startswith:判断是否以某个字符串开头
print("http://localhost:80".startswith("http://"))

# endswith:判断是否以某个字符串结尾
print("a.jpg".endswith(".jpg"))

# isalpha:判断是否为字母
print("abc".isalpha())

# isdigit:判断是否为数字
print("123".isdigit())

# isalnum:判断是否为字母加数字的组合
print("abc123".isalnum())

# ispace:判断是否为空白字符
print(" r  n".isspace())

02 列表

列表的下标

列表和字符串一样,都是序列类型,都有自己的下标。下标是从0开始的有序整数。

示例代码:

name_list = ['张三''李四''王五']

print(name_list)

print(name_list[1], name_list[0], name_list[2])

列表的查找

和字符串一样,列表页提供了一些常用的查找方法:

  • index:查找元素的索引
  • count:查找元素的个数

示例代码:

name_list = ['张三''李四''王五''张三''李四''王五''张三''李四''王五', ]

# index:查找元素的索引
print(name_list.index("李四"))

# count:查找元素的个数
print(name_list.count("张三"))

判断列表元素是否存在

要判断列表元素是否存在,Python提供了两种方法:

  • in:判断元素在列表中
  • not in:判断元素不在列表中

示例代码:

name_list = ['张三''李四''王五''张三''李四''王五''张三''李四''王五', ]

# in:判断元素在列表中
print("张三" in name_list)

# not in:判断元素不在列表中
print("张三33" not in name_list)

列表增加数据

要向列表中增加数据,常用的有以下几种方法:

  • append:向列表末尾追加元素
  • extend:向列表追加一个序列的多个元素
  • insert:向列表的指定索引位置插入元素

示例代码:

name_list = []

# append:向列表末尾追加元素
name_list.append("张三")
print(name_list)

# extend:向列表追加一个序列的多个元素
name_list.extend(["李四""王五"])
print(name_list)

# insert:向列表的指定索引位置插入元素
name_list.insert(0"张珊珊")
print(name_list)

列表删除数据

除了增加数据,列表还可以删除数据。常用的删除列表数据的方法如下:

  • del:删除列表或者删除列表中的元素
  • pop:删除最后一个数据,或者删除指定下标的数据
  • remove:删除指定元素
  • clear:清空元素,即就是删除所有数据

示例代码:

name_list = ['张三''李四''王五''张三''李四''王五''张三''李四''王五', ]

# del:删除列表或者删除列表中的元素
del name_list[0]
print(name_list)

# pop:删除最后一个数据,或者删除指定下标的数据
name_list.pop()
print(name_list)
name_list.pop(0)
print(name_list)

# remove:删除指定元素
name_list.remove("李四")
print(name_list)

# clear:清空元素,即就是删除所有数据
name_list.clear()
print(name_list)

列表的复制

列表提供了一个copy方法,用于执行对列表的浅拷贝。关于深拷贝和浅拷贝,是比较重难点的知识,后面再讲。至于不能直接将列表赋值给另一个列表,这个涉及到引用的知识点,这种赋值是直接拷贝内存地址,列表还是同一个。浅拷贝指的是将列表中的值类型元素拷贝到一个新的列表中,两个列表不共享同一块内存。

示例代码:直接赋值是不可取的

arr = [123]

# 直接赋值是不可取的
arr1 = arr

# 因为共享了同一块内存地址,一修改,就都修改了
arr1[0] = 333
print(arr, arr1)

示例代码:使用copy进行浅拷贝

arr = [123]

# 使用浅拷贝则不会,一般来讲,浅拷贝都够用
arr1 = arr.copy()
# 两个列表互不影响
arr1[0] = 333
print(arr, arr1)

列表的嵌套

理论上来讲,列表是可以存储任何元素的,包括列表本身。所以,列表是可以嵌套的,甚至是无限嵌套。不过最常见的也就是二级嵌套表示二维数组,三维嵌套表示三维数组。其他层级的嵌套很少见。

示例代码:

# 二维数组
arr = [[1122], [3344]]
print(arr)

# 三维数组
arr = [[[12], [34]], [[56], [78]]]
print(arr)

列表的遍历

遍历列表用for循环是最方便的,有几层嵌套的列表,就用几个嵌套的for循环即可。

示例代码:一维数组的遍历

# 一维数组
arr = [11223344]
for v in arr:
    print(v, end="t")
print()

示例代码:二维数组的遍历

# 二维数组
arr = [[1122], [3344]]
for v in arr:
    for vv in v:
        print(vv, end="t")
print()

示例代码:三维数组的遍历

# 三维数组
arr = [[[12], [34]], [[56], [78]]]
for v in arr:
    for vv in v:
        for vvv in vv:
            print(vvv, end="t")
print()

03 元组

为什么要有元组

元组也是一种序列类型。目前我们学过的字符串,列表也都是序列类型。列表是可变序列,但是字符串和元素都是不可变序列。

为什么有了字符串和列表,还有有元组呢?

主要是因为字符串是不可变的,但是只能存储字符。而列表可以存储任意类型,但是列表又是可变的。为了有一种数据结构能够存储任意类型数据,又是不可变的类型,所以就有了元组。

元组的定义

元组的常用定义方法如下:

  • 定义空元组:tuple()
  • 定义一个元素的元组:(元素,),注意,元素后面要有个逗号
  • 定义多个元素的元素:(元素1,元素2,元素3)

示例:元组的定义

# 定义空元组:`tuple()`
t = tuple()
print(t, type(t))

# 定义一个元素的元组:`(元素,)`,注意,元素后面要有个逗号
t = (1,)
print(t, type(t))

# s定义多个元素的元素:`(元素1,元素2,元素3)`
t = (123)
print(t, type(t))

元组的常用操作

元组是一种非常简单的数据结构,能够进行的操作也比较有限,主要包括:

  • 通过下标访问元素
  • index:查找元素的下标
  • count:查找元素的个数
  • len:查看元素的长度

示例代码:

t = ("a""b""c")

# 通过下标访问元素
print(t[0])

# index:查找元素的下标
print(t.index("a"))

# count:查找元素的个数
print(t.count("b"))

# len:查看元素的长度
print(len(t))

结语

关注我不迷路,欢迎关注我的微信公众号”张大鹏520″,如果您对此文章感兴趣,欢迎点赞收藏,留言评论。

文中所有代码,只需要打赏20元,然后留言评论“已打赏”,即可获取哦。

本文的PDF电子书版,只需要打赏3元,然后留言评论“已打赏”,即可获取哦。

写文章不容易,不喜勿喷哈,如果有想要学编程,学项目,或者在工作中有项目难以单独完成需要提供帮助的同学,欢迎私信我哈。生活不易,想要利用学到的编程知识,业余赚点零花钱。

接项目:网站开发,APP开发,各种管理系统开发。

带徒弟:Python编程教学,Golang编程教学,前端编程教学。

谢谢您!!!


原文始发于微信公众号(张大鹏520):Python零基础入门教程05 字符串和列表以及元组

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48538.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!