字符串str
1)字符串介绍
1.使用单引号包裹起来的字符就是字符串
例如
a='1b' b='2a'
字符串不可以被更改,例如如下,
>>> a='1'
>>> a='2'
这里a实际已经不是原来的a了,在内存中的位置已经不一样了
2.字符串可以使用 “+”,进行拼接,
>>>a='a'
>>>b='b'
>>> c=a+b
>>> print (c) ab
"*"进行重复操作
>>>b *3
’bbb’
3.字符串识别成员操作符: in/not in
(in :如下字符串a在变量a中,输出真)
>>>a='abc'
>>> 'a' in a
True
>>> 'd' in a
False(not in:如下字符串d,不在变量a中,则输出真,在的话输出假)
>>>'d' not in a True
2)字符串输出
#代码如下
name='ajbn'
age=20
work='运维工程师'
print("姓名:%s"%name)
print("年龄:%d"%age)
print("工作是:%s"%work)
运行测试如下
姓名:ajbn年龄:20
工作是:运维工程师
>>>
3)字符串输入
#代码如下
name=input('输入你的名字')
print("你的名字是:%s"%name)
测试如下
输入你的名字ajbn
你的名字是:ajbn
4)下标和切片
1.下标
1) 字符串下标的概念
字符串可列表都是可以通过index索引或者下标的形式用来访问数据的
例如
>>> a='qwe'
例如,上面a的值,'q'
的下标就是0,'w'
的下标就是’1’,’e'
的下标就是2
以此类推,下标都是从0开始,
2)下标的查询语法
>>>a[0]
’q’
后面的0就是下标数字,
2.切片
对操作的对象截取其中的一部分操作
基本格式如下
slice(start, stop[, step])
start:开始值,不填默认0,取到该值
stop:结束值,不填取到最后一个,填的的话取不到该值取到前一个,可以超过最大的数值
step:步长默认为1(一个目标至下一个目标的差),类似range函数,可以为负数
举例如下
>>> name='ajbn66'
>>> print (name[0:3])
ajb
(输出0~2地标的字符,类似range函数,后面的只会输出到前一位,就是下标2 前面地标0一定会输出)
>>>print(name[:3])
ajb
(不写前面的,起始值,默认从下标0,开始)
>>> print(name[0:]) ajbn66
(不写后面的,结束值,默认输出到最后的下标)>>>print(name[:]) ajbn66
(全部不写,下标从0开始,输出全部字符串)>>> print (name[0:4:2]) ab
(从下标0开始,输出到下标3,步长为2表示每隔一个字符输出一个字符依次类推,步长3就是隔两个字符输出一个字符
当然也可反正打印出字符串
>>>p='APACHE'
>>> print (p[5:-7:-1]) EHCAPA
(这里解释一下,5是正着数那个’E’的下标,解释一下后面结束值,是-7
因为,因为0是正着排的第一个,而倒着排’E’,就是’-1‘,到’A’,是-6’,而要显示’A’,必须填‘-7’
这里和range函数不太一样)
5)字符串常见操作(内置方法)
字符串属于不可变类型,以下的方式是使用特殊的方式打印出来
其原来变量的值并不会改变的,如果需要使用,
需要给原来变量从新赋一个新的值
1 .capitalize()
使字符串的首字母大写,其余字母小写
>>>u='AJBN'
>>>print(u.capitalize())
Ajbn
(后面的u.capitalize,u是变量名)如果字符串的首字母不是英文,则后面的全小写
>>>a='123AJBN'
>>> print(a.capitalize())
123ajbn
2 .casefold()
使字符串里的字母全小写,不管其他字符是否为其他形式
>>>I='098AJBN好'
>>> print(I.casefold())
098ajbn好
3 . center (.center(width, fillchar))
将字符串中原来的内容居中显示(打印)
width表示整体的长度,fillchar表示需要添加打印的字符用来填补字符串要达到width的长度,fillchar默认是空格,
>>> k='AJBN123好'
>>> print (k.center(20,'*'))下面这是输出结果,长度一共是20,中间是字符串内容,其他地方以“*”号显示,当然你也可以把“*”,换成其他任何的字符或数字,注意要以 ' '或" "包裹
******AJBN123好******
4 .count (.count(,start,end))
计算指定字符在字符串中出现的次数,不写默认从0至结尾
start 开始的下标(能取到),end 结束的下标(取不到,不写取到字符串最后)
例如
>>> C='AJBN66666'
>>> print(C.count('6',0,6))
2
(查找字符串’6‘的出现次数,从下标0,开始到下标5,输出2,出现了2次)
5 .endswith (.endswith(,start,end))
查询字符串中是否以指定字符结尾,返回bool值,end的下标取不到,不写end的值可以取到
>>>H='www baidu'
>>>print (H.endswith('a',0,6))
True
从下标0开始,到下标5,测试是否已'a'结尾,是返回真,不是返回假,空格也算一个地标
6 .find (.find(start,end))
查找指定字符在字符串中出现的第一个下标,如果没有返回 ‘-1’,
end默认不写,取到最后,和上面一样
>>> L='AAA III'
>>> print (L.find('I')) 4
如上例子,查找’I‘字符串在字符串出现的第一个下标,并打印,如果多个’I‘ 只会输出从左到右第一个的下标
7 .index (.index(start,end))
返回指定字符在字符串中出现的第一个下标,end 默认不写取到最后,
取不到改下标,和find()方法一样,只不过指定字符不存在的话index方式会报错
>>> F='nihao xiaoming//'
>>> print(F.index('i',0,2))
1
(如上,i的地标是‘1’
,筛选范围在地标0~1之间)
8 .isalnum()
判断是否为字母或者数字,返回布尔值
>>> O='love99 master'
>>> print(O.isalnum())
False
(上面O变量,因为中间有空格,所以返回假)
下面这个就对了
>>>L='love996'
>>>print(L.isalnum())
True
9 .isalpha()
判断是否是纯字母,返回布尔值
>>>A='aAaI'
>>>print (A.isalpha())
True
10.判断字符串是否是十进制
>>>Z='10'
>>>print(Z.isdecimal())
True
(注意只可以是字符串,不可以写数字)
11 .isdigit()
判断字符串是否是纯数字
(如下,有小数点也不算是纯数字)
>>> K='255.255'
>>> print (K.isdigit())
False>>> K='255'
>>> print(K.isdigit())
True
12 .islower()
判断是否全小写,数字不影响判断
>>> S='st9'
>>>print(S.islower())
True
(下面这里有大写字母,返回假)
>>>S='sTr'
>>> print(S.islower())
False
13 .isupper()
判断字母是否全大写,符号和数字不影响
>>> Y='III123*'
>>> print(Y.isupper())
True
14 .join(iterable)
将可迭代对象用字符串进行分隔,如果是列表分隔,则会显示为字符串,但本质不会改变
>>>I='123qwe'
>>>print(';' .join(I))
1;2;3;q;w;e>>> print(',' .join(I))
1,2,3,q,w,e15 .split(sep=None, maxsplit=-1)
删除字符串(列表不可以)中的sep,并返回一个列表;以str为分隔符切片string,如果num有指定值,则仅分隔 num+ 个子字符串
就是使用特定的符号或者其他分隔原来的字符串显示成列表的形式
>>>n='www;baidu;com'
>>> print (n.split(';'))
[‘www’, ‘baidu’, ‘com’]
列表list
列表是可变的类型,对列表做的,增加,删除,改变等操作,会改变原来的变量的值
1) 创建列表的方法
使用[ ]包裹,中间需要使用英文逗号, 分隔,中间的值可以是任意都可以,没有限制
>>>l=[1,2,3]
>>> print (type(l))
<class ‘list’>
>>>print (l)
[1, 2, 3]
2) 工厂函数,转换
可以将其他类型转换成列表的形式
>>>k='w12'
>>>print (type(k))
<class ‘str’>
>>>l=list(k)
>>> print (type(l))
<class ‘list’>
>>>print (l)
[‘w’, ‘1’, ‘2’]
3)列表的长度,len(列表名)
求列表有几段,从1开始,不是下标的概念
>>>l=[1,2,3]
>>>print (len(l))
3
4)列表操作 查
1.通过下标
>>>l=['w1','w2','w3','w4','w5','w6']
>>>print (l[0])
w1
>>> print (l[1])
w2
也支持切片的操作
>>> print (l[0:2]) [‘w1’, ‘w2’]
2.通过for循环
oldlist=['xiaoming','xiaohong','xiaolan']
for i in oldlist:
print (i)
运行测试,结果如下
xiaomingxiaohong
xiaolan
3.通过while循环
newlist=['xiao1','xiao2','xiao3']
i=0
while i<3:
print (newlist[i])
i=i+1
运行测试
xiao1xiao2
xiao3
4.成员操作符 in , not in
>>>a=['w1','w2','w3']
>>> 'w1' in a
True
5.通过元素查找下标index(obj,start,stop)
start开始的下标可以取到,stop下标取不到取前一个,默认不写取到最后
如下,查找’w1’字符串在列表中的地标从地标0到地标2之间查找
>>> l.index('w1',0,3) 0
(如上w1的地标是0)
6.二维列表
>>>l=[[1,2,3],[4,5,6],[7,8,9]]
>>> print (l[2][1])
8
(这里解释一下,第一个[2],实际是大地标2,[7,8,9],这个列表,第二个 [1] 值是[7,8,9]中的地标1,也就是8)
5) 列表操作 增
1 .append
增加到列表末尾,追加,只能追加一个或一个组如[1,2,3]
>>>k=[7,8,9]
>>> k.append(10)
>>>print (k)
[7, 8, 9, 10]
2 .extend
将一个可迭代对象逐个添加到末尾(只能是列表或字符串)
>>>l=[2,3,4]
>>>l.extend('888')
>>>print (l)
[2, 3, 4, ‘8’, ‘8’, ‘8’]
注意上面的8是字符串而不是数字加了引号
3 .insert(index, object)
将obj添加到指定的下标位置之前
例如,将 8 添加 1之前,1的地标是2
>>> s=[3,2,1]
>>> s.insert(2,8)
>>>print (s)
[3, 2, 8, 1]
6)列表操作之改
1.通过下标直接=修改
如下将’5‘改成8通过下标实现,5的下标是2
>>>i=[1,3,5,7]
>>>i[2]=8
>>> print (i)
[1, 3, 8, 7]
2.元素互换
如下,将地标2,3的元素就是4 4换成地标0,和1的元素就是2 2
>>> l=[2,2,4,4]
>>> l[2],l[3]=l[0],l[1]
>>> print (l) [2, 2, 2, 2]
7) 列表操作 删
1 .clear() 清空列表
>>>l=[3,3,0,6]
>>>l.clear()
>>> print(l)
[]
2 .pop(index)
删除并返回(index指定的)一位元素,默认删除最后一位,基于下标
如下删除下标为1的值,返回了4说明把4删除了
>>>k=[2,4,6,8,10]
>>> k.pop(1)
4
>>> k.pop()
10
>>> print (k)
[2, 6, 8]
(不写括号里的,默认删除最后一位,如上)
3 .remove(value)
删除指定的元素(具体的值)(基于元素而不是下标)
如下,删除数值为20的,不是基于下标,
>>> o=[5,10,20]
>>> o.remove(20)
>>> print (o)
[5, 10]
4 .del 需要删的元素
基于地标实现
>>>l=[2,3,4]
>>> del l[2]
>>>print (l)
[2, 3]
基于列表名,会删掉整个列表
>>> del (l)
>>> print (l)
(会报错,提示不存在,因为已经删了)
8)列表其他方法
1 .copy():
拷贝出一个新的列表,拷贝t,到t2
>>>t=[8,9]
>>>t2=t.copy()
>>> print (t2)
[8, 9]
2 .count(values):
返回value这个值在列表中出现的次数
>>>y1=[1,1,1,2,2,2]
>>>print (y1.count(1))
3
(如上1 在y1列表中出现了3次)
9) 列表排序
sort()方法是将list按特定顺序重新排列默认为由小到大,参数reverse=True可以改为倒序,由大到小
>>> list1=[9,8,7,6,5,4,3,2,1]
>>>list1.sort()
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
(设置为False,为正序)
>>>list1.sort(reverse=False)
>>> print (list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
(如下设置为True是倒序)
>>>list1.sort(reverse=True)
>>> print (list1)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
注意上面我没有直接打印,那个类似这个list1.sort(reverse=True)
,因为这里这是一个动作
要打印更改后的变量的值
10)应用案例
1.列表去重
list1=[1,2,2,3,3,4,4,5,5,5]
ku=[]
for i in list1:
if i not in ku:
ku.append(i)
print (ku)
运行测试[1, 2, 3, 4, 5]
2.点名系统
输入任意值返回一个名字,而且必须是随机的
import random #必须引用这个模块,得到随机的值
name=['小明','小红','孙悟空','唐僧','沙僧','红孩儿']
while True:
input1=input('可以输入任意的值按n键退出')
if input1 == 'n':
break #退出循环
else:
index=random.randint(0,5)
#上面这里表示从0到5生成一个随机的值,可以根据地标来写
#因为地标从0开始到5,所以写上面的
print(name[index])
运行测试如下
实验完毕 !