字符串常见操作
- 最常用的字符串相关操作:
find(上次课),count(上次课),replace(4号),split(5号),join(27号),strip(17号)
- 4.replace()
replace函数实现字符串中部分字符的替换
#例一
name = 'hello world haha'
new_name = name.replace('ha','Ha')
print(new_name)
name = 'hello world haha'
new_name = name.replace('ha','Ha',1)
print(new_name)
#¥599------>599
price = '¥599'
price = price.replace('¥','')
print(price)
- 5.split() 分割
以str为分隔符分割name,如果maxsplit指定值,那么仅分割maxsplit个字符串
name = 'hello world haha'
name_list = name.split(' ')
print(name_list)
- capitalize()
把字符串第一个字符大写
my_str = 'hello world neuedu and neueducpp'
my_str2 = my_str.capitalize()
print(my_str2)
- 7.title()
将字符串每个单词的首字母大写
my_str = 'hello world neuedu and neueducpp'
my_str3 = my_str.title()
print(my_str3)
- 8.startswith
startswith检测字符串是否以str为开头
my_str = 'hello world neuedu and neueducpp'
my_str4 = my_str.startswith('hello')
print(my_str4)
my_str5 = my_str.startswith('Hello')
print(my_str5)
- 9.endswith
endswith()检测字符串是否以str为结尾
my_str = 'hello world neuedu and neueducpp'
my_str6 = my_str.endswith('cpp')
print(my_str6)
- 10.upper
upper 把字符串的所有字母变为大写
my_str = 'hello world neuedu and neueducpp'
my_str7 = my_str.upper()
print(my_str7)
- 11.lower
lower 把字符串的所有字母变为小写
my_str = 'HELLO WORLD NEUEDU AND NEUEDUCPP'
my_str8 = my_str.lower()
print(my_str8)
注:原字符串是不可变的,要将改变的值付给新的变量
- 12.rjust()
rjust() 返回一个原字符串右对齐的并用空格填充width长度的新字符串;
my_str_space = 'hello'
new_my_str_space = my_str_space.rjust(10)
print(new_my_str_space)
- 13.ljust()
ljust() 返回一个原字符串左对齐的并用空格填充width长度的新字符串;
my_str_space = 'hello'
new_my_str_space = my_str_space.ljust(10)
print(new_my_str_space)
- 14.center()
返回一个原字符串居中对齐的并用空格填充width长度的新字符串
my_str_space = 'hello'
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
- 15.lstrip
lstrip清除字符串左边的空格
my_str_space = 'hello'
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
print(len(new_my_str_space2))
new_str2 = new_my_str_space2.lstrip()
print(len(new_str2))
print(new_str2)
- 16.rstrip
rstrip清除字符串右边的空格
my_str_space = 'hello'
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
print(len(new_my_str_space2))
new_str2 = new_my_str_space2.lstrip()
new_str3 = new_str2.rstrip()
print(len(new_str3))
print(new_str3)
- 17.strip()
strip()删除两端的空白字符
注:空格可用\n和\t(四个空格)替换
my_str_space = 'hello'
new_my_str_space2 = my_str_space.center(50)
print(new_my_str_space2)
print(len(new_my_str_space2))
new_str4 = new_my_str_space2.strip()
print(len(new_str4))
print(new_str4)
- 18.find----->rfind
my_str = 'hello world neuedu and neueducpp'
index5 = my_str.rfind('neuedu')
print(index5)
19.index----->rindex
20.partition()
partition() 把目标字符串分成以str分割成三部分,str前面的字符,str,str后的字符三部分
my_str = 'hello world neuedu and neueducpp'
print(my_str)
t_mystr = my_str.partition('neuedu')
print(t_mystr)
21.partition----->rpartition
22.splitlines
splitlines 按照行分割,返回一个包含各行作为元素的列表
line = 'hello\nworld'
print(line)
list_line = line.splitlines()
print(list_line)
- 23.isalpha
isalpha 判断字符串是否全是由字母组成的
my_str = 'hello world neuedu and neueducpp'
alpha = my_str.isalpha()
print(alpha)
my_str2 = 'aaaaaaaa'
alpha2 = my_str2.isalpha()
print(alpha2)
- 24.isdight
判断字符串是否全是由数字组成的
- 25.isalnum
isalpha判断字符串是否全是由字母或数字组成的
my_str3 = 'aaa123aa'
alpha3 = my_str3.isalnum()
print(alpha3)
- 26.isspace
isspace判断字符串是否全是由空格组成的
- 27.join
join 将列表中的各个元组连接成一个字符串
str4 = " "
list1 = ['my','name','is','songxiaobao']
my_name = str4.join(list1)
print(my_name)
#" ".join()以“ “中的内容连接
my_name2 = "_".join(list1)
print(my_name2)
价值一个亿的AI核心代码
while True:
print('AI说: '+input().strip('吗?')+'!')
第二种写法
while True:
print('AI说: '+input().replace('吗','').replace('?','!'))
列表
跟c中的数组很像,但是list可以存储不同类型的数据
name_list = ['小明','1024','xiaohong']
print(name_list)
print(type(name_list))
- 访问
name_list = ['小明']
print(name_list)
print(name_list[0])
- 遍历
name_list = ['小明','1024','xiaohong']
第一种
for name in name_list:
print(name)
第二种
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
列表相关操作
- 添加操作:
name_list = ['小明','1024','xiaohong']
print('添加前',name_list)
str = input('请输入您要添加的内容')
name_list.append(str)
print('添加后',name_list)
#日常套路
list1 = []
for i in range (10):
list1.append(i)
print(list1)
<1>.insert 在指定位置index前插入 元素object
a = ['0','1','2']
a.insert(1,10)
print(a)
<2>.extend 可以将另外一个集合的元素逐一添加到目标列表中
a = [1,2]
c = [1,2]
b = [3,4]
a.append(b)
print(a)
c.extend(b)
print(c)
- 修改操作:
name_list = ['小明','1024','xiaohong']
name_list[2] = '小红'
print(name_list)
- 查找操作:
用 in 和 not in
name_list = ['小明','1024','xiaohong']
findName = '小明'
if findName in name_list:
print('小明在列表中')
else:
print('不在')
if findName not in name_list:
print('不在')
else:
print('小明在列表中')
用index和count
a = ['a','b','c','a','d']
index = a.index('a')
print(index)
index1 = a.index('a',1,3)#左闭右开
print(index1)
index2 = a.index('a',1,4)
print(index2)
count = a.count('a')
print(count)
- 删除操作:
del :根据下标进行删除
name_list = ['小明','1024','xiaohong']
print('删除前',name_list)
del name_list[0]
print('删除后',name_list)
pop :删除最后一个元素
name_list = ['小明','1024','xiaohong']
print('删除前',name_list)
name_list.pop()
print('删除后',name_list)
remove :根据元素的值进行删除
name_list = ['小明','1024','xiaohong']
print('删除前',name_list)
name_list.remove('小明')
print('删除后',name_list)
- 列表的排序
sort 和 sorted
#from modename import name1,name2(只加载需要的)
from random import randint
#生成随机数的一种方法
# num = randint(-10,10)#[-10,10]
# print(num)
#另一种方法
num_list = []
for _ in range(10):
num_list.append(randint(1,20))
print(num_list)
num_list.sort()
print('正序排序',num_list)
num_list.sort(reverse=True)
print('逆序排序',num_list)
new_list = sorted(num_list)
print(num_list)
print(new_list)
区别1:
.sort()对原来的列表进行修改排序
sorted()返回一个新的列表,原列表不改变
区别2:
.sort()属于列表的成员方法
sorted()可对所有可迭代对象进行操作
区别3:
ls.sort(key reverse)
sorted(ls)
- 查找字符串的常用操作
print(dir(''))
- 查找列表的常用操作
print(dir([]))
- 列表的嵌套
列表里包含列表
school_name = [['qinghua','beida'],['nankai','tianda'],['dongqin','yanshan']]
print(school_name)
print(school_name[0][1])
- 列表推导式(列表解析)
所谓的列表推导式,就是指的轻量级循环创建列表
#例一
list1 = []
for i in range(10):
list1.append(i)
print(list1)
#用一行代码实现(实际运行效率也比上一个高)
list1 = []
list2 = [i for i in range(10)]
print(list2)
list3 = [i for i in range(2,17,2)]
print(list3)
#例二
list1 = []
for _ in range(10):
list1.append('lalala')
print(list1)
#用一行代码实现
list2 = ['lalala' for _ in range(10)]
print(list2)
#例三
from random import randint
#生成十个元素,范围在【-10,10】区间的列表
l = [randint(-10,10)for _ in range(10)]
print(l)
#选出大于等于零的数据
res = []
#使用for循环筛选:
for x in l:
if x >=0:
res.append(x)
print('使用for循环筛选:',res)
#推导式,循环过程中使用if
res2 = [x for x in l if x >=0]
print("使用列表解析筛选:",res2)
- 列表转化成字符串
my_list = ['Welcome','To','ML','World']
print(' '.join(my_list))
- 列表和字符串的'*'
str1 = 'hehe'*3
print(str1)
list4 = ['6',9,0,3,14]*5
print(list4)
- 习题一
内容:筛选出0到10中的所有偶数,并输出
number = [i for i in range(11)]
print(number)
#筛选出偶数的元素
#1.for循环
res = []
for i in number:
if i%2 == 0:
res.append(i)
print(res)
#2.列表推导式
res2 = [i for i in number if i%2 == 0]
print(res2)
- 习题二
一个学校,有三个办公室,现在有8名老师等待工位的分配,请编写程序,完成随机的分配
import string
from random import randint
#定义3个办公室
offices = [[],[],[]]
#定义8名老师
names = list(string.ascii_uppercase [:8])
print(names)
for name in names:
#产生一个【0,2】的随机数
index = randint(0,2)
offices[index].append(name)
print(offices)
#循环遍历
i = 1
for tempNames in offices:
print('办公室{}的人数为{}'.format(i,len(tempNames)))
i += 1
print('成员有:')
for teacherName in tempNames:
print(teacherName,end ='')
print('\n')
元组
序列:列表/字符串/元组
元组与列表类似,但不能修改,用小括号表示
a = ('aaa',111,0.88)
tuple
print(type(a))
- 访问
a = ('aaa',111,0.88)
print(a[0])
- 修改是不可以的
- 删除也是不行的
- index和count在元组上的相关用法
a1 = ('a','b','c','b','a')
index1 = a1.index('a')
print(index1)
c = a1.count('b')
print(c)
- 特例
#不是元组
b = (211221)*2
#该元组的正确表示法为:b =(211221,)
print(type(b))
print(b)
- 同时遍历两个列表
zip()用于将可迭代对象作为参数,将对象中的对应的元素打包一个元组,可返回这些元素的元组,节省空间
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b)
print(zipped)#返回的是地址
print(list(zipped))
#长度不一致,与最短的对象相同
zipped2 = zip(a,c)
print(list(zipped2))
#实例
heros = ['后羿','安琪拉']
skills = ['惩戒之箭','烤串']
for hero,skill in zip(heros,skills):
print(hero,'------>',skill)
字典
key -->value
- 定义一个字典
info = {'name': '刘强东','age': 45,'id': '202564486445875','addr': '北京'}
print(type(info))
- 访问
根据键进行访问,键不存在则报错
print(info['name'])
#当我们不确定字典是否存在某个Key,而且还要获得其Value,可以使用get方法
#get访问的键不存在时,会返回空值
age = info.get('age')
print(age)
#get后可加默认值,在键不存在时可返回默认值
mail = info.get('mail','122@jingdong.com')
print(mail)
- 修改
info['name'] = '马云'
print(info['name'])
- 添加
info['sex'] = '男'
print('添加后:', info)
- 删除
del 根据键名删除
del info['name']
print('删除后', info)
#删除整个字典
del info
clear 清空字典
info.clear()
print('clear后:', info)
- 字典常用操作
#1.len 返回字典长度
print(len(info))#k->v的个数
#.keys()返回所有Key
print(info.keys())
#.values()返回所有Value
print(info.values())
#.items()返回所有的Key和Value
print(info.items())
- 字典遍历
for Key, Value in info.items():
print(Key, '---->', Value)
集合
是无序的,元素是唯一的
作用:一般用于元组或列表的元素去重
- 定义一个集合
set = set()
print(type(set))
#{}内为空的时候,为字典
set1 = {1,2,5,4,3}
print(type(set1))
- 添加
add
set1.add(8)
print(set1)
- 删除
#删除 不存在会报错
set1.remove(1)
print(set1)
pop 随机删除集合中的元素
set1.pop()
print(set1)
discard 如果存在则直接删除,如果没有则不进行任何操作
set1.discard(2)
print(set1)
set1.discard(6)
print(set1)
案例操作
使用字典和集合进行筛选
- 字典解析
#随机创建一个班级的分数表
from random import randint
grades = {'Student{}'.format(i):randint(50,100) for i in range(1,20)}
print(grades)
#筛选出高于90分的人
d = {k:v for k, v in grades.items() if v >=90}
print(len(d))
print(d)
- 集合解析
from random import randint
set1 = {randint(0,20) for _ in range(20)}
#生成实际的元素未必是20个,重复的元素不会保留
print(set1)
#找到能被3整除的
res = {x for x in set1 if x%3 == 0}
print(res)
函数
- 函数的定义:
def 函数名(num):
pass
函数的调用:
函数名(num)
定义一个累加函数
def caculateNum(num):
'''
计算1~num之间的累加和
:param num: 累加和的末位
:return: 累加和
'''
res = 0
for i in range(1,num+1):
res += i
return res
pass
res = caculateNum(100)
print(res)