如有字符串mystr = ‘hello world itcast and itcastcpp’,以下是常见的操作
mystr = “hello world and itcast and itheima and Python”
1. find()
print(mystr.find(‘and’)) # 12
print(mystr.find(‘and’, 15, 30)) # 23
print(mystr.find(‘ands’)) # -1 , ands子串不存在
2.index()
print(mystr.index(‘and’)) # 12
print(mystr.index(‘and’, 15, 30)) # 23
print(mystr.index(‘ands’)) # 如果index查找子串不存在,报错
3.count()
print(mystr.count(‘and’, 15, 30))
print(mystr.count(‘and’)) # 3
print(mystr.count(‘ands’)) # 0
4.rfind()
print(mystr.rfind(‘and’))
print(mystr.rfind(‘ands’))
5.rindex()
print(mystr.rindex(‘and’))
print(mystr.rindex(‘ands’))
mystr = “hello world and itcast and itheima and Python”
1. replace() 把and换成he #** 说明replace函数有返回值,返回值是修改后的字符串
new_str = mystr.replace(‘and’, ‘he’)
new_str = mystr.replace(‘and’, ‘he’, 1)
替换次数如果超出子串出现的次数,表示替换所有这个子串
new_str = mystr.replace(‘and’, ‘he’, 10)
# print(mystr)
print(new_str)
***** 调用了replace函数后,发现原有字符串的数据并没有做到修改,修改后的数据是replace函数的返回值
— 说明 字符串是不可变数据类型
数据是否可以改变划分为 可变类型 和 不可变类型
2. split() – 分割,返回一个列表, 丢失分割字符
list1 = mystr.split(‘and’)
list1 = mystr.split(‘and’, 2)
print(list1)
3. join() – 合并列表里面的字符串数据为一个大字符串
mylist = [‘aa’, ‘bb’, ‘cc’]
# aa…bb…cc
new_str = ‘…’.join(mylist)
print(new_str)
mystr = “hello world and itcast and itheima and Python”
1. capitalize() 字符串首字母大写
new_str = mystr.capitalize()
2.title(): 字符串中每个单词首字母大写
new_str = mystr.title()
3. upper():小写转大写
new_str = mystr.upper()
4. lower(): 大写转小写
new_str = mystr.lower()
print(new_str)
mystr = " hello world and itcast and itheima and Python "
print(mystr)
1. lstrip(): 删除左侧空白字符
new_str = mystr.lstrip()
2. rstrip(): 删除右侧空白字符
new_str = mystr.rstrip()
3.strip():删除两侧空白字符
new_str = mystr.strip()
print(new_str)
mystr = “hello world and itcast and itheima and Python”
1. startswith(): 判断字符串是否以某个子串开头
print(mystr.startswith(‘hello’))
print(mystr.startswith(‘hel’))
print(mystr.startswith(‘hels’))
2. endswith(): 判断字符串是否以某个子串结尾
print(mystr.endswith(‘Python’))
print(mystr.endswith(‘Pythons’))
3. isalpha(): 字母
print(mystr.isalpha())
4. isdigit(): 数字
print(mystr.isdigit())
mystr1 = ‘12345’
print(mystr1.isdigit())
5. isalnum() : 数字或字母或组合
print(mystr1.isalnum())
print(mystr.isalnum())
mystr2 = ‘abc123’
print(mystr2.isalnum())
6.isspace(): 空白
print(mystr.isspace())
mystr3 = ’ ’
print(mystr3.isspace())
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
print(name_list)
print(name_list[1])
print(name_list[0])
print(name_list[2])
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. index()
print(name_list.index(‘TOM’))
print(name_list.index(‘TOMS’))
2. count()
print(name_list.count(‘TOM’))
print(name_list.count(‘TOMS’))
3.len()
print(len(name_list))
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. in
print(‘TOM’ in name_list)
print(‘TOMS’ in name_list)
2. not in
print(‘TOM’ not in name_list)
print(‘TOMs’ not in name_list)
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
需求:注册邮箱,用户输入一个账号名,判断这个账号名是否存在,如果存在,提示用户,否则提示可以注册
“”"
-
用户输入账号
-
判断if…else
“”"
name = input(‘请输入您的邮箱账号名:’)
if name in name_list:
提示用户名已经存在
print(f’您输入的名字是{name}, 此用户名已经存在’)
else:
提示可以注册
print(f’您输入的名字是{name}, 可以注册’)
列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”、“查”
1.添加元素("增"append, extend, insert)
append
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.append(‘xiaoming’)
name_list.append([11, 22])
print(name_list)
1. 列表数据可改的 – 列表可变类型
2. append函数追加数据的时候如果数据是一个序列,追加整个序列到列表的结尾
extend
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.extend(‘xiaoming’)
name_list.extend([‘xiaoming’, ‘xiaohong’])
print(name_list)
extend() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾
insert
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.insert(下标, 数据)
name_list.insert(1, ‘aaa’)
print(name_list)
2.修改元素(“改”)
3.查找元素("查"in, not in, index, count)
所谓的查找,就是看看指定的元素是否存在
in, not in
index, count
下标
len():访问列表长度,即列表中数据的个数。
4.删除元素("删"del, pop, remove)
demo:(del)
demo:(pop)
demo:(remove)
demo:(clear)[清空列表]
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. del
del name_list
del(name_list)
del 可以删除指定下标的数据
del name_list[0]
print(name_list)
2. pop() – 删除指定下标的数据,如果不指定下标,默认删除最后一个数据,
无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据
del_name = name_list.pop()
del_name = name_list.pop(1)
print(del_name)
print(name_list)
3. remove(数据)
name_list.remove(‘ROSE’)
print(name_list)
4. clear() – 清空
name_list.clear()
print(name_list)
5.排序(sort, reverse)
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. 修改指定下标的数据
name_list[0] = ‘aaa’
print(name_list)
2. 逆序 reverse()
list1 = [1, 3, 2, 5, 4, 6]
list1.reverse()
print(list1)
3. sort() 排序:升序(默认) 和 降序
list1.sort()
list1.sort(reverse=False)
list1.sort(reverse=True)
print(list1)
6.复制(copy)
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
list1 = name_list.copy()
print(list1)
print(name_list)
1.使用for循环
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
for i in name_list:
遍历序列中的数据
print(i)
2.使用while循环
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
‘’’
-
准备表示下标数据
-
循环while
条件 i < 3 len()
遍历:依次按顺序访问到序列的每一个数据
i += 1
‘’’
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
1.列表嵌套
name_list = [[‘TOM’, ‘Lily’, ‘Rose’], [‘张三’, ‘李四’, ‘王五’], [‘xiaohong’, ‘xiaoming’, ‘xiaolv’]]
print(name_list)
列表嵌套的时候的数据查询
print(name_list[0])
print(name_list[0][1])
2.应用
一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
需求:8位老师,3个办公室, 将8位老师随机分配到3个办公室
“”"
步骤:
- 准备数据
1.1 8位老师 – 列表
1.2 3个办公室 - 列表嵌套
- 分配老师到办公室
*** 随机分配
就是把老师的名字写入到办公室列表 – 办公室列表追加老师名字数据
- 验证是否分配成功
打印办公室详细信息:每个办公室的人数和对应的老师名字
“”"
import random
1. 准备数据
teachers = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’]
offices = [[], [], []]
2. 分配老师到办公室 – 取到每个老师放到办公室列表 – 遍历老师列表数据
for name in teachers:
列表追加数据 – append(选中) extend insert
xx[0] – 不能指定是具体某个下标 – 随机
num = random.randint(0, 2)
offices[num].append(name)
print(num)
print(offices)
为了更贴合生活,把各个办公室子列表加一个办公室编号 1, 2, 3
i = 1
3. 验证是否分配成功
for office in offices:
打印办公室人数 – 子列表数据的个数 len()
print(f’办公室{i}的人数是{len(office)},老师分别是:')
打印老师的名字
print() – 每个子列表里面的名字个数不一定 – 遍历 – 子列表
for name in office:
print(name)
i += 1
t1 = (10, 20, 30)
print(t1)
print(type(t1))
1. 多个数据元组
t1 = (10, 20, 30)
print(type(t1))
2. 单个数据的元组
t2 = (10,)
print(type(t2))
3. 如果单个数据的元组不加逗号
t3 = (10)
print(type(t3)) # int
t4 = (‘aaa’)
print(type(t4)) # str
t5 = (‘aaa’,)
print(type(t5))
t1 = (‘aa’, ‘bb’, ‘cc’, ‘bb’)
1. 下标
print(t1[0])
2. index()
print(t1.index(‘bb’))
print(t1.index(‘bbb’))
3. count()
print(t1.count(‘aa’))
print(t1.count(‘aaa’))
4. len()
print(len(t1))
t1 = (‘aa’, ‘bb’, ‘cc’, ‘bb’)
t1[0] = ‘aaa’
t2 = (‘aa’, ‘bb’, [‘cc’, ‘dd’])
print(t2[2])
print(t2[2][0])
t2[2][0] = ‘TOM’
print(t2)
1.生活中的字典
2.软件开发中的字典
创建字典
{} 键值对 各个键值对用逗号隔开
1. 有数据的字典: name的值TOM, age的值是20, gender的值是男
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
print(dict1)
print(type(dict1))
2. 创建空字典
dict2 = {}
print(type(dict2))
dict3 = dict()
print(type(dict3))
3.根据键访问值
1.查看元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
1. [key]
print(dict1[‘name’]) # 返回对应的值(key存在)
print(dict1[‘names’])
2. 函数
2.1 get()
print(dict1.get(‘name’))
print(dict1.get(‘names’)) # 如果key不存在,返回None
print(dict1.get(‘names’, ‘Lily’))
2.2 keys() 查找字典中所有的key,返回可迭代对象
print(dict1.keys())
2.3 values() 查找字典中的所有的value,返回可迭代对象
print(dict1.values())
2.4 items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值
print(dict1.items())
2.修改元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
dict1[‘name’] = ‘Lily’
print(dict1)
dict1[‘id’] = 110
print(dict1)
3.添加元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
字典序列[key] = 值
id的值是110
dict1[‘id’] = 110
print(dict1)
dict1[‘name’] = ‘ROSE’
print(dict1)
4.删除元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
del 删除字典或指定的键值对
del(dict1)
print(dict1)
del dict1[‘name’]
del dict1[‘names’] # 报错
print(dict1)
clear()
dict1.clear()
print(dict1)
5.len()
6.keys
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for key in dict1.keys():
print(key)
7.values
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for value in dict1.values():
print(value)
8.items
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for item in dict1.items():
print(item)
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
xx.items(): 返回可迭代对象,内部是元组,元组有2个数据
元组数据1是字典的key,元组数据2是字典的value
for key, value in dict1.items():
print(key)
print(value)
目标: key=value
print(f’{key}={value}')
9.has_key (Python3 已取消)
1.字符串遍历
2.列表遍历
3.元组遍历
4.字典遍历
遍历字典的key(键)
遍历字典的value(值)
遍历字典的项(元素)
遍历字典的key-value(键值对)
5. 想一想,如何实现带下标索引的遍历
6.字典的扩展
有序字典:OrderDcit
1.创建集合
1. 创建有数据的集合
s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 40, 30, 20}
print(s2)
s3 = set(‘abcdefg’)
print(s3)
2. 创建空集合: set()
s4 = set()
print(s4)
print(type(s4))
s5 = {}
print(type(s5))
2.集合常见操作方法
增加数据
s1 = {10, 20}
1. 集合是可变类型
add()
s1.add(100)
print(s1)
集合有去重功能,如果追加的数据是集合已有数据,则什么事情都不做
s1.add(100)
print(s1)
s1.add([10, 20, 30]) # 报错
print(s1)
update(): 增加的数据是序列
s1.update([10, 20, 30, 40, 50])
print(s1)
s1.update(100) # 报错
print(s1)
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!