Python笔记5

容器

容器:也可以称为数据序列,或者高级数据类型,也是python中的数据类型,容器中可以存放多个数据。

字符串

字符串是容器,因为字符串中可以包含多个字符
定义:使用引号(单引号,双引号,三引号)引起来的内容就是字符串

# 单引号
my_str1 = 'hello'
print(my_str1,type(my_str1))

# 双引号
my_str2 = "hello"
print(my_str2,type(my_str2))

# 三引号
my_str3 = """hello"""
print(my_str3,type(my_str3))
my_str4 = '''hello'''
print(my_str4,type(my_str4))

# 字符串本身包含单引号,则在定义的时候不能使用单引号
# 字符串本身包含单双引号,则在定义的时候不能使用双引号
my_str5 = "I'm 小明" # 不能写为:‘I'm 小明’
print(my_str5)

# 字符串本身包含单引号,在定义的时候,只想使用单引号
# 使用转义字符:\,将字符串本身的引号进行转义:\' ---> ‘   \" ---> "
my_str6 = 'I\'m 小明'
print(my_str6)

# 打印:I\'m 小明
# 使用 \\ : \\ ---> \
my_str7 = 'I\\\'m 小明'
print(my_str7)

# 打印:I\'m 小明
# 字符串前加上r'',原生字符串,字符串中的 \ 不会作为转义字符,文件操作会用一下
my_str8 = r'I\'m 小明'
print(my_str8)

my_str9 = r'I\\\'m 小明'
print(my_str9)

下标

下标(索引):是指字符在字符串的位置编号,这个编号就是下标。这个编号一般来说都是从左到右进行编号,从0开始的(python中支持负数下标,从右到左进行编号,从-1开始)
下标作用:可以使用下标获取字符串中某个位置的字符
语法:字符串[下标]

str = 'abcdefg'
# 打印第一个  a
print(str[0])
# 打印第三个  c
print(str[2])
# 打印最后一个 g
print(str[-1])
# 打印到数第二个 f
print(str[-2])

#获取字符串中字符的个数(获取字符串的长度)
# len(字符串)    length(长度)
num = len(str)
print(num) # 7

# 最后一个字符  g
print(str[num-1]) 
print(str[len(str)]-1)

切片

切片:可以获取字符串中多个字符(多个字符的下标是有规律的,等差数列)
语法:字符串[start :end :step]

1、start 是开始位置的下标,end是结束位置的下标(注意,不能取到这个位置的字符),step是步长,等差数列的差值,所取的相邻字符之间的差值,默认是1,可以不写
例:
[1 : 5 :1]  # 1 2 3 4
[1 : 5 :2]  # 1 3 
[1 : 5 :3]  # 1 4
[1 : 5 :4]  # 1 
str = 'abcdefg'
# 获取abc
print(str[0:3:1])
# 如果步长是1可以不写,最后一个冒号也不写
print(str[0:3])
# 如果开始位置为0,可以不写,但是冒号必须有
print(str[:3])

# 获取efg
print(str[4:7])
print(str[-3:7])
# 如果最后一个字符也要取,可以不写,但是冒号必须有
print(str[4:])

# 获取全部内容
# 如果开始和结束都不写,获取全部内容,但是冒号必须有
print(str[:])

# 获取aceg 0 2 4 6
print(str[0:7:2])
print(str[::2])

# 特殊应用,步长为负数,开始和结束不写,意思全变,一般不用管,只有一种使用场景
# 反转(逆置)字符串,字符串[::-1]
# gfedcba
print(str[::-1])

字符串的查找方法 find

  • 用法
字符串.find(sub_str,start,end)

作用:在字符串中查找是否存在sub_str 这样的字符串
sub_str:要查找的小的字符串
start:开始位置,从哪个下标位置开始查找,一般不写,默认是0
end:结束位置,查找到哪个下标结束,一般不写,默认是len()
返回(代码执行之后会得到什么,如果有返回,就可以使用变量保存):
1、如果在字符串找到了 sub_str,返回sub_str 第一次出现的正数下标(sub_str 中第一个字符在大字符串中的下标)
2、如果没有找到,返回-1

  • 代码案例
str1 = 'and itcast and python and English'
# 查找 and   返回第一个and的下标:0
num = str1.find('and')
print(num)

# 查找第二个 and  返回第二个and下标:11  从第一次出现的后一位开始找
num1=str1.find('and',num+1)
print(num1)

# 查找第三个 and  返回第三个and下标:22  从第二次出现的后一位开始找
num2=str1.find('and',num1+1)
print(num2)

# 查找第四个 and  返回第四个and下标:-1  从第三次出现的后一位开始找
num3=str1.find('and',num2+1)
print(num3)

字符串的替换方法 replace

  • 用法
字符串.replace(old_str,new_str,count)

作用:将字符串中 old_str 替换为 new_str
old_str:被替换的内容
new_str:替换为的内容
count:替换的次数,一般不写,默认是全部替换
返回:替换之后的完整的字符串,注意:原来的字符串没有发生改变

  • 代码案例
str1 = 'good good study'

# 将str1中所有的 g 改为 G
str2= str1.replace('g','G')
# str1: good good study
print('str1:',str1)
# str2: Good Good study
print('str2:',str2)

# 将第一个good改成GOOD
str3= str1.replace('good','GOOD',1)
print('str3:',str3)

# 将第二个good改成GOOD
str4= str1.replace('good','GOOD')
str4= str4.replace('GOOD','good',1)
print('str4:',str4)

字符串的拆分 split

  • 用法
字符串.split(sep,maxsplit)

作用:将字符串按照sep进行分割(拆分)
sep:字符串按照什么进行拆分,默认是空白字符(空格,换行\n,tab键\t)
mazsplit:分割次数,一般不写,全部分割
返回:将一个字符串拆分为多少个,存到列表中
注意:如果sep不写,想要指定分割次数,则需要写成:字符串.split(maxsplit=n)

  • 代码案例
str1 = 'hello world and itcast and python and english'

# 将str1按照and进行拆分
result1 = str1.split('and')
print(result1)

# 将str1按照and进行拆分,只拆分1次
result2 = str1.split('and',1)
print(result2)

# 将str1按照空白字符进行拆分
result3 = str1.split()
print(result3)

# 将str1按照空白字符进行拆分,只拆分一次
result4 = str1.split(maxsplit=1)
print(result4)

字符串的链接 join

  • 用法
字符串.join(列表)
# 括号中的内容主要是列表,可以是其他容器

作用:将字符串插入到列表中每相邻的两个数据之间,组成一个新的字符串
列表中的数据使用 使用逗号隔开
注意:列表中的数据必须是字符串,否则会报错

list1= ['hello', 'world', 'and', 'itcast', 'and', 'python', 'and', 'english']

# 将列表中的数据使用空格链接
str= ' '.join(list1)
print(str)
# hello world and itcast and python and english

# 将列表中的数据使用and链接
str1= ' and '.join(list1)
print(str1)
# hello and world and and and itcast and and and python and and and english

#hello world and itcast and python and english
list2= ['hello world','itcast','python','english']
str2 = ' and '.join(list2)
print(str2)

列表

列表list中可以存储多个数据,每个数据之间使用逗号隔开,列表中可以存放任意类型的数据
  • 定义
# 1、类实例化的方法(不常用)
# 定义空列表(没有任何数据的列表)  变量 = list()
list1 = list()
print(type(list1),list1)   #<class 'list'> []

# 类型转换 list(容器)  将其他的容器转换为列表
# 转换字符串会将字符串中的每一个字符作为一个数据存入到列表中
list2 = list('hello')
print(type(list2),list2)  # <class 'list'> ['h', 'e', 'l', 'l', 'o']

# 2、直接使用 [] 进行定义(常用)
# 定义空列表
my_list = []
print(my_list) # []

# 定义非空列表
my_list1 = [1,'小明',3.14,False]
print(my_list1)  # [1, '小明', 3.14, False]

列表支持下标和切片

列表支持下标和切片操作,使用方法和字符串中的使用方法一致。
区别:列表的切片得到的是列表

list1 = ['小明', 18, 3.14, True]
# 获取第一个数据
print(list1[0]) # 小明
# 获取最后一个数据
print(list1[-1]) # True
# 获取第一第二个数据
print(list1[0:2]) # ['小明', 18]


# 列表页支持 len()求长度的,求数据元素个数
print(len(list1)) # 4

查找-列表中数据下标的方法

字符串中使用 find 方法查找下标的,不存在返回的是 -1
列表中没有 find方法, 想要查找数据的下标,使用 index()方法

  • 用法
列表.index(数据,start,end) # 使用方法和 find 方法一样,同时在字符串中也有index 方法

区别:返回,index()方法,找到返回第一次出现的下标,没有找到代码直接报错

查找-判断是否存在

判断容器中某个数据是否存在,可以使用 in 关键字

  • 用法
数据 in 容器    #  如果存在,返回True;如果不存在,返回False

查找-统计出现的次数

  • 用法
列表.count(数据)  # 返回 数据出现的次数
my_list = [1, 3, 5, 7, 2, 3]

#index()
# 查找数据3出现的下标
num= my_list.index(3)
print(num) # 1

# 查找数据4出现的下标
num1= my_list.index(4)
print(num1) # 会报错  ValueError: 4 is not in list

# in 
# 查找数据4出现的下标
if 4 in my_list:
    print(my_list.index(4))
else:
    print('不存在数据4') # 不会报错   不存在数据4

# count 
# 查找数据4出现的下标
if my_list.count(4) >0 :
    print(my_list.index(4))
else:
    print('不存在数据4')  # 不会报错   不存在数据4

添加数据的方法

  • 尾部添加(最常用)
    列表.append(数据) # 将数据添加到列表的尾部
    返回:返回的 None (关键字,空),一般就不会再使用 变量 来保存返回的内容,想要查看添加后的列表,需要打印的是列表
  • 指定下标位置添加
    列表.insert(下标,数据) # 在指定的下标位置添加数据,如果指定的下标位置本来有数据,原数据会后移
    返回:返回的 None (关键字,空),一般就不会再使用 变量 来保存返回的内容,想要查看添加后的列表,需要打印的是列表
  • 列表合并
    列表1.extend(列表2) # 将列表2中的所有数据逐个添加到列表1的尾部
    返回:返回的 None (关键字,空),一般就不会再使用 变量 来保存返回的内容,想要查看添加后的列表,需要打印的是列表
  • 代码案例
my_list = []
print(my_list) # []
# 1、向空列表里添加数据:学习
my_list.append('学习')
print(my_list) # ['学习']

# 2、向列表尾部添加数据:进步
my_list.append('进步')
print(my_list) # ['学习', '进步']

# 3、在下标为1的位置添加数据:发奋
my_list.insert(1,'发奋')
print(my_list) # ['学习', '发奋', '进步']

# 4、在下标为1的位置添加数据:图强
my_list.insert(1,'图强')
print(my_list) # ['学习', '图强', '发奋', '进步']

# 5、定义新的列表 list1
list1 = ['郭德纲','郭麒麟']

# 将list1中的数据逐个添加到 my_list中
my_list.extend(list1)
print(my_list) # ['学习', '图强', '发奋', '进步', '郭德纲', '郭麒麟']

# 将list1中的数据作为一个整体添加到 my_list中
my_list.append(list1)
print(my_list) # ['学习', '图强', '发奋', '进步', '郭德纲', '郭麒麟', ['郭德纲', '郭麒麟']]

补充

# 循环几次,n就是几
for i in range(n):
   pass
   
#  循环每执行一次,在列表添加一个数据
变量名 = [ 生成数据的规则 for 变量 in xxx]

# 等价  list1=[i for i in range(5)]     [0,1,2,3,4]
list1 = []
for i in range(5):
   list1.append(i)

# ['hello', 'hello', 'hello', 'hello', 'hello']
list2 = ['hello' for i in range(5)]
print(list2)

# [0, 1, 2, 3, 4]
list3 = [i for i in range(5)]
print(list3)

# ['hello', 'hello', 'hello', 'hello', 'hello']
list4 = [i for i in list2]
print(list4)
  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值