python容器

目录

容器:

容器分类:

 集合

遍历: 

字符串:

 下标(索引)

字符串切片:

字符串查找

 字符串替换

 字符串拆分:

 字符串的连接--join

字符串小结:


容器:

        容器变量可以存储多个元素,减少变量的定义。

in 操作符

in 是python中的关键字.

数据 in 容器   可以用来判断容器中是否包含这个数据,如果包含返回True,如果不包含返回False

对于字典来说,判断的是字典中是否包含这个键.

容器分类:

        根据不同容器的特性,将容器分为序列式容器和非序列式容器。

  1. 序列式容器:元素是连续存放的, 除了第一个元素的前面没有元素,最后一
    个元素的后面没有元素,其他所有的元素前后都有一个元素。包括字符串、列表、元组。
    序列式容器支持根据索引(下标)访问元素,非序列式容器不支持索引(下标)的方式访问元素;
    序列式容器支持切片操作,非序列式容器不支持切片操作。
    序列式容器的索引都是以 0 开始的, 并不是从 1 开始.
  2. 非序列式容器:在存储元素时不是连续存放的,容器中的任何一个元素前后都可能没有元素。 包括字典、集合。

 集合

集合set,{数据,数据,...}

1.集合中的数据是不能重复的,即没有重复数据;

2.应用,对列表进行去重操作就是类型转换,可以将列表转换为集合,然后再将集合转换为列表.

my_list = [1, 2, 1, 3, 4, 1, 2, 4, 57]

# 方式一
list1 = list(set(my_list))  # 先转换成集合,再转换成列表
print(list1)

# 方式二
new_List = []  # 定义新列表.保存去重后的数据

# 遍历原列表
for i in my_list:
    # 判断数据是否存在新列表
    if i not in new_List:
        new_List.append(i)
print(new_List)

遍历: 

        不重复的访问容器中的每一个元素. 

字符串:

  • 定义字符串:
  1. 字符串使用一对单引号来定义;
  2. 字符串使用一对双引号来定义;
  3. 字符串使用一对三引号来定义;
  4. 如果字符串本身包含单引号,定义的时候不能使用单引号;
  5. 如果字符串本身包含双引号,定义的时候不能使用双引号。

 下标(索引)

  1. 下标(索引),是数据在容器(字符串,列表,元组)中的位置、编号;
  2. 一般来说,使用的是正数下标,从0开始;
  3. 作用:可以通过下标来获取具体位置的数据,使用的语法为容器[下标];
  4. python中是支持负数下标,-1表示最后一个位置的数据。
str1 = 'abcdefg'

#需求:打印输出字符串中的a字符
print(str1[1])
print(str1[-6])

#需求:打印输出字符串中最后一个字符(-1)
print(str1[-1])

#需求:打印输出下标为3的位置的字符
print(str1[3])
  •  字符串替换:
poetry = '远看泰山黑乎乎, 上头细来下头粗. 茹把泰山倒过来, 下头细来上头粗.茹'

# replace并不会替换原本的字符串,替换完毕之后返回一个新的字符串
new_poetry = poetry.replace('茹', '如')
print(poetry)
print(new_poetry)
#容器专属方法(函数)
#字符串通过.(点)的方式调用专属的函数.
new_poetry = poetry.replace('茹', '如', 1)
print(new_poetry)

  •  字符串特点:
  1. 字符串一旦定义不允许修改;
  2. 字符串容器中的元素都是字符类型的.
#找到字符串中@的位置
user_mail = 'hdiangaanfhq@dhao.com'
#如果查找到,返回字串第一次出现@的位置
#如果查找不到@,返回-1
position = user_mail.find('@')
if position == -1:
    print('@不存在,邮箱不合法!')
else:
    print('@的位置是:',position)

字符串切片:

  1. 使用切片操作,可以一次性获取容器中的多个数据(多个数据之间存在一定的规律,数据的下标是等差数列(相邻的两个数字之间的差值是一样的));
  2. 语法:容器[start:end:step]
    2.1 start   表示开始位置的下标
    2.2 end    表示结束位置的下标,但是end所对应的下标位置的数据是不能取到的
    2.3 step   步长,表示的意思就是相邻两个坐标的差值
    start,start+step,start+step*2,...,end(取不到)
my_str = 'abcdefg'

#需求1:打印字符串中abc字符,start 0,end 3,step 1
print(my_str[0:3:1])

#1.1 如果步长是1,可以省略不写
print(my_str[0:3])

#1.2 如果start开始位置的下标为0,可以不写,但是冒号不能少
print(my_str[:3])

#需求2:打印字符串中的efg,start 4,end 7,step 1
print(my_str[4:7:1])

#2.1 如果取到最后一个字符,end可以不写,但是冒号不能少
print(my_str[4:])

#需求3:打印字符串中的aceg,start 0,end 7,step 2
print(my_str[::2])

#练习:cf
print(my_str[2:6:3])

#特殊情况,步长为-1,反转(逆序)字符串
print(my_str[::-1])
#字符串提供了一种语法,用来获取字符串中的一个字串
user_mail = 'hdiangaanfhq@dhao.com'
print(user_mail[0])
#切片语法,左闭右开
print(user_mail[0:4])
#获得容器元素的个数
string_length = len(user_mail)
print(user_mail[13:string_length])

#起始值不写表示从0开始
print(user_mail[:12])
#结束值不写表示到最后
print(user_mail[13:])
#起始值和结束值都不写表示从头到尾
print(user_mail[:])
#步长
print(user_mail[0:12:3])

#起始,结束,步长都可以为负数
print(user_mail[-5:-1])
#字符串逆序
print(user_mail[::-1])

字符串查找

字符串.find(sub_str)  #在字符串中,查找是否存在sub_str这样的字符串返回值(这行代码执行的结果)

1.如果存在sub_str,返回第一次出现sub_str位置的下标;
2.如果不存在sub_str,返回-1

#1.现有字符串数据:“白日依山尽”
#2.请设计程序,实现判断“白日”和“红日”是否存在于数据中
#3.要求如果数据存在,则输出数据所在位置

my_str = '白日依山尽'
sub_str = '白日'
result = my_str.find(sub_str)
if result == -1:
    print(f'{sub_str}不存在')
else:
    print(f'{sub_str}存在,下标位置为:',result)

 字符串替换

字符串.replace(old,new,count)  #将字符串中的old字符串替换为new字符串

old   原字符串,被替换的字符串

new  新字符串,要替换的字符串

count 一般不写,表示全部替换,可以指定替换的次数

返回:会返回一个替换后的完整的字符串
注意:原字符串不会改变

my_str = 'good good study'

#需求,将good变为GOOD
my_str_new = my_str.replace('good','GOOD')
print(my_str_new)
print(my_str)

#将第一个good替换为Good
my_str_new_1 = my_str.replace('good','Good',1)
print(my_str_new_1)
print(my_str)

#将第二个good替换为Good
#先整体替换为Good,再将替换后的第一个Good替换为good
my_str_new_2 = my_str.replace('good','Good').replace('Good','good',1)
print(my_str_new_2)
print(my_str)

 字符串拆分:

字符串.split(sep)    #将字符串按照指定的字符串sep进行分隔

sep,按照sep分隔,可以不写,默认按照空白字符(空格\t  \n)分隔

返回:列表,列表中的每个数据就是分隔后的字符串

str1 = 'hello python\tand itcast and\nitheima'

#1.默认按照空白字符分隔
list1 = str1.split()
print(list1)

#2.按照空格分隔
list2 = str1.split(' ')
print(list2)

#3.按照and分隔
list3 = str1.split('and')
print(list3)
#split 拆分
user_mail = 'hdiangaanfhq@dhao.com'
#获得@字符串在user_mail中出现的参数
char_count = user_mail.count('@')
if char_count > 1:
    print('您的邮箱不合法!')
else:
    result = user_mail.split('@')
    print(result)
    print('用户名:',result[0])
    print('邮箱后缀:',result[1])

  •  字符串去除左右两侧空格,判断字符串是否全为字母:
user_name = input('请输入用户名:')
#strip函数默认去除字符串两侧的空格
new_user_name = user_name.strip()
#isalpha判断字符串所有元素是否都是字母
if new_user_name.isalpha():
    print('注册成功')
else:
    print('注册失败')

 字符串的连接--join

字符串.join(容器)   #容器一般是列表,将字符串插入到列表相邻的两个数据之间,组成新的字符串

注意点:列表中的数据,必须都是字符串才可以

list1 = ['hello','python','and','itcast','and','itheima']

#将列表中数据使用空格组成新的字符串
str1 = ' '.join(list1)
print(str1)  #hello python and itcast and itheima

#使用逗号连接
str2 = ','.join(list1)
print(str2)  #hello,python,and,itcast,and,itheima

#使用_*_连接
str3 = '_*_'.join(list1)
print(str3)  #hello_*_python_*_and_*_itcast_*_and_*_itheima

字符串小结:

  1. 字符串一般使用两个双引号或两个单引号来定义;
  2. 字符串是序列式容器,支持下标索引和切片操作,索引支持正数和负数;
  3. 字符串遍历可以使用while循环,也可以使用for循环;
  4. find方法用于查找指定字串是否存在,存在则返回出现的位置,否则返回-1;
  5. 字符串的切片语法用于获得指定区间的子串
  6. 字符串切片语法包含三部分:开始位置、结束位置、步长;
  7. replace方法用于替换字符串中的指定字串,不会修改原字符串,会返回一个替换后的新字符串;
  8. count方法返回指定子串出现的次数;
  9. split方法根据指定的分割字符串,将原字符串分割成多个部分,以列表形式返回;
  10. strip方法去除字符串两侧空格;
  11. isalpha方法判断i字符串是否全部为字母组成;
  12. 字符串的元素不能修改.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值