七、初识python-str内置函数、列表与列表函数(课时3)

str内置函数

一、查找类函数
  • find函数: 在原字符串寻找一个子字符串,返回第一次发现这个字符串的位置,可选定索引区间(rfind为从右往左找,lfind为从左往右找)
s = "Zhangchun is a silly boy, but Zhangchun is a cool boy" 
s1 = "Zhangchun"
s3 = "Liyu" 
s.find(s1) #结果为0,是从0开始索引且为第一个"Zhangchun"
s.find(s1,26,99) #结果为30,为第二个"Zhangchun"
s.find(s2) #结果为-1,表示未找到子字符串
  • index函数: 同上
s = "Zhangchun is a silly boy, but Zhangchun is a cool boy"
s1 = "Zhangchun"
s2 = "Liyu"
s.find(s1) #结果为0,是从0开始索引且为第一个"Zhangchun"
s.find(s1,26,99) #结果为30,为第二个"Zhangchun"
s.find(s2) #结果为ValueError,表示未找到子字符串

find与index函数的不同是未找到子字符串的反应不同

二、判断类函数
  • islower/isupper:判断是否为大写或者小写。空格、数字、标点不影响。但是汉字无大小写,所以为False。
l = "Liyu is a handsome boy" 
l2 = "liyu is a handsome boy"
l3 = "LIYU IS A HAND SOME BOY "
l4 = "111liyu is a handsome boy ? yes!"
l5 = "李彧是一个帅气的男孩"
l1.islower() #False
l2.islower() #True
l3.isupper() #True
l4.islower() #True
l5.islower() #False
l5.isupper() #False
  • isalpha:判断字符串是否为字母。前提至少包含一个字符,不然返回False,不能有空格、数字、符号、汉字之类的定西。必须为一串连续的字母串。
l1 = "Liyu is a cruel bot" #False
l2 = "Liyuisacruelbot" #True
l3 = "L123isda" #False
l4 = "asdkaosdk." #False
#lx.isalpha()来判断
  • startswith/endswith:检测字符串是否以某个子串开头。
    S.startswith(prefix[, start[, end]])
    S.endswith(suffix[, start[, end]])
    prefix为前缀、suffix为后缀。start与end表示选定区间的开始与结束。
l1 = "Zhangchun is a silly boy, and a cool boy"
l1.startswith("Zhangchun")
l1.endswith("boy")#上面两个都为True
l1.endswith("coolboy")#False,cool boy而非coolboy
  • isdigit/isnumeric/isdecimal:三个判断数字的函数。但不建议使用。
三、操作类函数
  • strip:通常用来删除字符串两边空格。也可以删除字符串两边被定义的字符。删除的是从头开始符合条件的连续字符。lstrip和rstrip是把左边或右边的空格或同样的字符删除。
l = "   liyuaaaaa  aaa  aa bb cc liyu         "
l.strip() #结果就两边空格删除
l2 = "liyuaaaaa  aaa  aa bb cc liyu"
l2.strip("liyu") #结果就为aaaaa  aaa  aa bb cc 
  • join:对字符进行拼接。
l1 = "love"
l = ["liyu ", "a uncertain people ", "yourself"]
l1.join(l) #结果为liyu love a uncertain people love youself

列表

一组有序数列做成的序列。数据有顺序,且可以不为同一个类型。
0.一些内置函数
id:显示变量的id
type:显示变量的类型

1.列表的创建

#直接创建,用中括号创建
l = [1,2,3,4,5]

#直接赋值创建列表
l2 = list()

#包含单个字符串的特例
l3 = "li yu"
l4 = list(l3)
print(l4) #结果为['l', 'i', ' ', 'y', 'u']
#这时候直接创建列表就可以了

2.列表的访问
使用下标操作,也叫做索引。列表的索引是从0开始的。

l = [1,2,3,4,98498,4845,1231,489]
print(l[7]) #结果就为489

#indexerror出现的原因,访问超过了其下标
print(l[9])

3.列表的切片
对列表进行任意一段的截取,从0开始且左包括又不包括,截取之后为一个新的列表 。(可以用id函数鉴别)

l = [45,9845,15,498,4165,48,1333]
print(l[2:6]) #结果为[15, 498, 4165, 48]

#切片下标可以为空
print(l[2:]) #从下标3到最后,[15,498,4165,48,1333]
print(l[:6]) #从下标0到下标5,[45,9845,15,498,4165,48]
print(l[:])  #[45,9845,15,498,4165,48,1333]
#切片可以超出范围,超出后不再考虑多余下标内容,不会出现indexerror

#切片可以控制步幅,步幅默认为1
print(l[::2]) # [45,15,4165,1333]

#下标值、步幅可以为负数
#下标值为负数是你自己表示从右往左数,最右边数字的下标为-1,但系统还是从左往右移动
#步幅为负数表示从右往左移动
print(l[-5:-1]) #结果为[15,498,4165,48]
print(l[-2:-6:-1]) #结果为[48,4165,498,15]

4.删除:del

#del删除
#如果删除之后为一个为一个新的id,说明生成了一个新的list
l = [5,22,7796,12,456]
print(id(l))
print(l)

del l[3]
print(id(l))
print(l)

#del一个变量后不能继续使用这个变量
del l
print(l)
'''结果为
2125021515592
[5, 22, 7796, 12, 456]
2125021515592
[5, 22, 7796, 456]
NameError
'''

5.列表的加法和乘法

#列表加法
q1 = [2,3,4]
q2 = [7,9,10]
q3 = ["liyu","haungjunhua","zhangchun"]
q4 = q1 + q2 + q3
print(q4)
#结果为[2, 3, 4, 7, 9, 10, 'liyu', 'haungjunhua', 'zhangchun']

#列表乘法,相当于把n个列表连接在一起
c = [7,6,5]
c2 = c * 5
print(c2)
#结果为[7, 6, 5, 7, 6, 5, 7, 6, 5, 7, 6, 5, 7, 6, 5]

6.列表的遍历

  • for循环
e = ["LiuYing", "Loves", "Wang Xiaojing", "forever"]
for i in e:
    print(i)
    
'''结果为
LiuYing
Loves
Wang Xiaojing
forever
'''
#in后面元素应该是可迭代的,如range
  • while循环
#while,但一般不用
s = [9,87,6,54,3,21]
length = len(s) #长度为6
print(length)
indx = 0 #表示list的下标,从0开始

while index < length:
   print(s[indx])
   indx += 1
'''结果为
6
9
87
6
54
3
21
'''

7.双层列表循环变异

#d为双层列表,或嵌套列表
d = [["ha",1],["he",2],["xi",3]]
for k,v in d:
   print(k, "--", v)
   
#k,v,w个数应该和解包出来的变量个数一致
d3 = [["ha",1,4],["he",2,3],["xi",3,7]]
for k,v,w in d3:
   print(k, "--", v, "--", w)
   
#双层列表变异
d2 = [["ha",1,4,6],["he",2,3],["xi",3,7,5,4]]
for k,v in d2:
   print(k, "--", v)

'''结果为
ha -- 1
he -- 2
xi -- 3

ha -- 1 -- 4
he -- 2 -- 3
xi -- 3 -- 7

ValueError
'''

8.列表内涵: 通过简单函数创建列表

#for创建
a = [1,2,3,4,5,6]
b = [i for i in a] #含义是对于a中所有元素放入b中
print(b)

#对于a中所有元素乘10
c = [i * 10 for i in a]
print(c)

#还可以过滤原来list中的元素放入新的列表中,如将a中偶数放入新列表中
#用条件语句
d = [i for i in a if i % 2 ==0]
print(d)

#列表生成嵌套
x = [s for s in range(1,4)]
y = [s for s in range(100,400) if s % 100 ==0]
print(x)
print(y)
g = [m + n for m in x for n in y]
print(g)
#等价于for循环嵌套
for j in x:
   for k in y:
       print(j + k, end="  ")
'''结果为
[1, 2, 3, 4, 5, 6]
***********************
[10, 20, 30, 40, 50, 60]
***********************
[2, 4, 6]
***********************
[1, 2, 3]
[100, 200, 300]
[101, 201, 301, 102, 202, 302, 103, 203, 303]
101  201  301  102  202  302  103  203  303  
'''

关于列表常用的函数

  • len求长度
x = [x for x in range(1,100)]
print(len(x)) #长度为99
  • max求最大值,min求最小值
x = [x for x in range(1,100)]
print(max(x))
print(min(x))
y = ["哈啊哈","张春","666"]
print(max(y))
print(min(y))
'''结果为
99
1
张春
666
'''
  • append 在列表最后一个元素后面增加一个元素
a = [1,2,3,4,5]
print(a)
print(id(a))
a.append(777)
print(a)
print(id(a))
'''
[1, 2, 3, 4, 5]
2269646838664
[1, 2, 3, 4, 5, 777]
2269646838664
'''
  • insert 在指定位置插上一个元素 insert(index, data)
a = [1,2,3,4,5]
print(a)
print(id(a))
a.insert(3, 777)
print(a)
print(id(a))
'''
[1, 2, 3, 4, 5]
3219775124616
[1, 2, 3, 777, 4, 5]
3219775124616
'''
  • 删除:
    1.del
    2.pop 把最后一个元素取出来
a = [1,2,3,4,5]
last_element = a.pop()
print(a)
print(last_element)
'''
[1, 2, 3, 4]
5
'''

3.remove 删除指定的变量 但是list中没有这个变量会报错,所以先检验。

a = [1,2,3,4,5]
print(a)
print(id(a))
if 4 in a:
    a.remove(4)
print(a)
print(id(a))
#id值一样,说明是在原list上进行的操作
'''
[1, 2, 3, 4]
2269647026696
[1, 2, 3]
2269647026696
'''
  • clear 清空列表,保持原地址不变
a = [1,2,3,4,5]
print(a)
print(id(a))
a.clear()
print(a)
print(id(a))
'''
[1, 2, 3, 4, 5]
2269645338440
[]
2269645338440
'''
  • reverse 列表反转,也保持原地址不变
a = [1,2,3,4,5]
print(a)
print(id(a))
a.reverse()
print(a)
print(id(a))
'''
[1, 2, 3, 4, 5]
3219775123848
[5, 4, 3, 2, 1]
2269647027848
'''
  • extend 扩展列表,相当于列表的加法
a = [1,2,3,4,5]
b = [6,7,8,9,10]
print(a)
print(id(a))
a.extend(b)
print(a)
print(id(a))
'''
[1, 2, 3, 4, 5]
3219776354888
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3219776354888
'''
  • count 查找列表中指定元素的个数
a = [1,2,3,4,5,6,7,5,5]
lenele_5 = a.count(5)
print(lenele_5)
#3
  • copy 浅拷贝,改变函数地址,生成新的地址
# 列表类型变量赋值示例
a = [1,2,3,4,5]
print(a)
print(id(a))
b = a
b[1] = 666
print(b)
print(id(b))
print(a)
print(id(a))
#说明list传的是地址,不是值

print("*" * 50)

#为了解决以上问题,用copy函数
c = [1,2,3,4,5]
print(c)
print(id(c))
d = c.copy()
d[1] = 666
print(d)
print(id(d))
print(c)
print(id(c))
'''
[1, 2, 3, 4, 5]
1583943224456
[1, 666, 3, 4, 5]
1583943224456
[1, 666, 3, 4, 5]
1583943224456
**************************************************
[1, 2, 3, 4, 5]
1583944193800
[1, 666, 3, 4, 5]
1583943273672
[1, 2, 3, 4, 5]
1583944193800
'''
  • 深浅拷贝区别
#浅拷贝只拷贝一层内容
#深拷贝需要特殊工具
a = [1,2,3,[10,20,30]]
b = a.copy()
print(id(a))
print(id(b))
print(id(a[3]))
print(id(b[3]))
a[3][2] = 666
print(a)
print(b)
'''
3219775137736
3219775137480
3219773936392
3219773936392
[1, 2, 3, [10, 20, 666]]
[1, 2, 3, [10, 20, 666]]
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值