Python容器

本文详细介绍了Python中的字符串和列表操作,包括下标访问、切片、查找方法(find、rfind、index、rindex、count)、替换(replace)、分割(split)与连接(join)。同时,讲解了列表的创建、遍历、添加数据、查询、删除、排序与逆序、嵌套等特性。此外,还提到了元组的基本操作,强调其不可变性。
摘要由CSDN通过智能技术生成

一、字符串

 

# 下标也是索引
my_str = 'hello'
print(my_str[0]) # 负数从-1开始
print(my_str[-1])
# [start:end:step]
# step默认为1,表示下标之间的间隔
# 不包含end对应的下标
print(my_str[2:4:1])

# end位置不写,表示是len(),即可以取到最后一个元素
my_str3 = my_str[2:]
print(my_str3)

# start位置不写,表示0开始
my_str4 = my_str[:3]  # 注意3的位置取不到
print(my_str4)

# start和end都不写,但是需要冒号
my_str5 = my_str[:]
print(my_str5)

print(my_str[-4: -1])  # -1位置取不到 ell
print(my_str[3:1])  # 没有结果输出

print(my_str[3:1:-1], '2')  # ll 2

print(my_str[::-1])  # 字符串的逆值, olleh

print(my_str[::2])  # 0 2 4 h l o  == my_str[0:5:2]

 字符串切片:

 

字符串查找方法:

find() & rfind()

my_str = 'hello world itcast and itcastcpp'
# find() 在字符串中查找是否存在某个字符串
# my_str.find(sub_str,start,end)
# sub_str: 要在字符串中查找的内容,类似str
# start :开始查找位置 ,默认0
# end: 结束的位置,查找到哪里结束,默认是len()
# 返回值:即方法执行的结果是什么,如果找得到sub_str, 返回的sub_str 在 my_str中的位置的正数下标
# 如果没有找到,那么返回-1
index = my_str.find('hello')
print(index)   # hello 在my_str下标为0的位置
# 从下标为3的位置找字符串 hello
print(my_str.find('hello', 3))
print(my_str.find('itcast'))  # 12 加上空格
print(my_str.find('itcast', 15))  # 23
# rfind() right find()  从右边(后边) 开始查找
print(my_str.rfind('itcast'))  # 23

index & rindex() ------没有找到会直接报错

print(my_str.index('hello'))  # 0
# print(my_str.index('hello', 5))  # error
print(my_str.rindex('itcast'))  # 23
print(my_str.index('itcast'))  # 12 加上空格,下标从0开始

count()---统计出现的次数

print(my_str.count('aaaa'))  # 0
print(my_str.count('hello'))  # 1
print(my_str.count('itcast'))  # 2
print(my_str.count('itcast'), 20) # 1 ,从20号以后itcast出现的次数

字符串替换 replace

# my_str.replace(old_str, new_str, count)
# old_str: 将要被替换的字符串
# new_str: 替换成的字符串
# count: 替换的次数,默认全部替换
#  返回值:得到一个新的字符串,不会改变原来的字符串

my_str = 'hello world itcast and itcastcpp'

my_str1 = my_str.replace('itcast', 'itheima')
print('my_str:', my_str)
print('my_str1:', my_str1)

my_str2 = my_str.replace('itcast','itheima', 1)  # 替换一次
print('my_str2:%s' % my_str2)

字符串分隔 split()

# 字符串分割split()
result = my_str.split()
print(result)
print(my_str.split('itcast'))  # 默认全部切割
print(my_str.split('itcast', 1))  # 切割1次
print(my_str.rsplit('itcast', 1))  # 从最右边开始切割

字符串连接 join()

# join()
# my_str.join(可迭代对象)
my_str = '_'.join('hello')
print(my_str)
print('_*_'.join('hello'))

# 定义列表
my_list = ['hello', 'cpp', 'python']
print("_".join(my_list))
print("_*_".join(my_list))
print(" ".join(my_list))

二、list

1.什么是列表?

列表是python中的一种数据类型,可以存放多个数据,列表中的数据可以是任意类型的

列表list,定义使用[],进行定义。

# 定义空列表
my_list = []
print(my_list, type(my_list))  # '[]' , <class 'list'>
my_list1 = list()  # 空列表
print(my_list1, type(my_list1))

# 定义带数据的列表,数据元素之间用逗号隔开
my_list2 = [1, 3.14, True, 'isaac']
print(my_list2, type(my_list2))  # [1, 3.14, True, 'isaac']  <class 'list'>

# 求列表中数据元素的个数,即列表的长度
num = len(my_list2)
print(num)

# 列表支持下标和切片操作
print(my_list2[1])  # 3.14
print(my_list2[-1])  # isaac

print(my_list2[1:3])  # [3.14,True]  因为左闭右开

# 下标操作和字符串中不同的是:字符串不能使用下标修改其中的数据,但是列表可以使用下标修改列表中的数据
my_list2[0] = 18
print(my_list2)

my_list2[-1] = 'hello'
print(my_list2)

my_list2[0] = 'python'
print(my_list2)
# 输出结果
D:\Python\Day03String\venv\Scripts\python.exe D:/Python/Day03String/list.py
[] <class 'list'>
[] <class 'list'>
[1, 3.14, True, 'isaac'] <class 'list'>
4
3.14
isaac
[3.14, True]
[18, 3.14, True, 'isaac']
[18, 3.14, True, 'hello']
['python', 3.14, True, 'hello']

2.遍历

# 遍历
my_list = ['A', 'B', 'C', 'D']
for i in my_list:
    print(i, end=' ')
print()
print('*' * 30)

j = 0
while j < len(my_list):
    print(my_list[j], end=' ')
    j += 1

 

3.向列表中添加数据

# 向列表中添加数据
# 向列表中添加数据的方法,都是直接在原列表中进行添加的,不会返回新的列表
my_list = ['A', 'B', 'C', 'D']
print(my_list)

# 列表.append(数据),向列表尾部追加数据
my_list.append('aa')
print(my_list)

result = my_list.append('12')  # 不要这样书写
print(result)  # 不要这样书写,结果为‘None’
print(my_list)  # ['A', 'B', 'C', 'D', 'aa', '12']
# 列表.insert(下标, 数据) 在指定的下标位置进行添加数据

my_list.insert(0, 'isaac')
print(my_list)
# print(my_list.insert(5, 3.14)) None
# 列表.extend(可迭代对象)  # str   列表,会将可迭代对象中的数据逐个添加到原列表的末尾
my_list.extend('he')
print(my_list)
my_list.extend([1, 'python', 3])
print(my_list)

4.列表中的数据查询操作(列表中没有find()方法,只有index()方法) 

my_list = [1, 3.14, 'issca', False]
num = my_list.index(3.14)  # 1
print(num)
# num1 = my_list.index(100)  # 程序报错,因为程序不存在
# count() 统计出现的次数
num3 = my_list.count(1)
print(num3)
# in/not in 判断是否存在,存在是True,不存在时False,一般和if 结合使用
num4 = 3.14 in my_list  # True
num4 = 3.14 not in my_list  # False
print(num4)

5.列表中的删除操作

# 根据下标删除
# pop() 默认删除最后一个数据
num = my_list.pop()  # 9
print(num)
print(my_list)

num = my_list.pop(2)  # 删除下标为2的数据 即5
print(num)
print(my_list)

#  del_列表[下标]
del my_list[1]  # 删除下标为1的数据2
print(my_list)

 

6.列表的排序和逆置

# 想要对列表中的数据进行排序,前提是列表中的数据类型是一样的
my_list = [1, 5, 3, 7, 9, 6]

# 列表.sort()直接在列表中进行排序
# my_list.sort()  # 默认是从小到大排序,即升序
# my_list.sort(reverse = True)  # 通过reverse= True,从大到小排列
my_list1 = sorted(my_list)
my_list2 = sorted(my_list,reverse=True)
print(my_list)
print(my_list1)
print(my_list2)

my_list3 = ['a', 'b', 'c', 'd', 'e']
my_lise4 = my_list3[::-1]
print(my_list3)
print(my_lise4)

# 在原列表直接逆值
my_list3.reverse()
print(my_list3)

 7.列表的嵌套

school_names = [['北京大学', '清华大学'], ['南开大学', '天津大学', '天津师范大学'], ['山东大学', '中国海洋大学']]
print(school_names[1])
print(school_names[1][1])
print(school_names[1][1][1])

# 山东大学
print(school_names[2][0])

# 全部遍历
for schools in school_names:
    for name in schools:
        print(name)

三、元组 

有兴趣自己跑一下代码。。。

# 元组和列表非常相似,都可以存放多个数据,可以存放不同数据类型的数据
# 不同点:列表用[], 元组使用()
# 列表中的数据可以修改,元组中的数据不能被修改
my_lists = [18, 3.14, True, 'issca']
my_tuple = (18, 3.14, True, 'issca')
print(my_tuple, type(my_tuple))

# 元组支持下标和切片要求
print(my_tuple[1])

# 定义空数组,没有意义
my_tuple1 = ()
print(my_tuple1, type(my_tuple1))
my_tuple2 = tuple()

# 定义一个数据元素的元素,数据元素后边,必须有一个逗号,否则报书写错误
my_tuple3 = (3)  # 3 <class 'int'>
my_tuple4 = (3,)

print(my_tuple3, type(my_tuple3))
print(my_tuple4, type(my_tuple4))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值