2019-04-27第二次课

字符串常见操作

  • 最常用的字符串相关操作:

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)
    1. 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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,734评论 0 10
  • 1.1 列表的定义 List(列表) 是Python中使用最频繁的数据类型,在其他语言中通常叫做数组 专门用于存储...
    体面_5376阅读 856评论 0 0
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,259评论 0 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,378评论 0 5
  • 跟着陈金粧校长每日5000步+每日读书 我们是百日行动派! 21天形成一个习惯, 100天让这个习惯成为陪伴一生的...
    小瘦妖阅读 1,035评论 0 1