python字符串,列表,元组,字典的基本操作
文章目录
- python字符串,列表,元组,字典的基本操作
- 一、字符串
- 1.1字符串的输出
- 1.2字符串的输入
- 1.3下标和切片
- 1.4 字符串常见操作
- 1.4.1 find
- 1.4.2 index
- 1.4.3 count
- 1.4.4 replace
- 1.4.5 split
- 1.4.6 capitalize
- 1.4.7 title
- 1.4.8 startswith
- 1.4.9 endswith
- 1.4.10 lower
- 1.4.11 upper
- 1.4.12 ljust
- 1.4.13 rjust
- 1.4.14 center
- 1.4.15 lstrip
- 1.4.16 rstrip
- 1.4.17 strip
- 1.4.18 rfind
- 1.4.19 rindex
- 1.4.20 partition
- 1.4.21 rpartition
- 1.4.22 splitlines
- 1.4.23 isalpha
- 1.4.24 isdigit
- 1.4.25 isalnum
- 1.4.26 isspace
- 1.4.27 jion
- 二、列表
一、字符串
1.1字符串的输出
name = 'qxt'
position = 'student'
qq="110120119"
wx="qxtzmr"
school="清华北大"
address = '江西赣州'
print('--------------------------------------------------')
print("姓名:%s" % name)
print("职位:%s" % position)
print("QQ:%s" % qq)
print("微信:%s" % wx)
print("学校:%s" % school)
print("居住地址:%s" % address)
print('--------------------------------------------------')
输出结果:
--------------------------------------------------
姓名:qxt
职位:student
QQ:110120119
微信:qxtzmr
学校:清华北大
居住地址:江西赣州
--------------------------------------------------
1.2字符串的输入
QQ = input('请输入您的QQ号:')
print("用户名为:%s" % QQ)
QQ_password = input('请输入您的QQ密码:')
print("密码为:%s" % QQ_password)
输出结果:
请输入您的QQ号:5201314
用户名为:5201314
请输入您的QQ密码:110120119
密码为:110120119
1.3下标和切片
下标:
#注意 下标是从0开始计算下标,不是从1
name = '邱勋涛真的太TM帅了'
print(name[0])
print(name[1])
print(name[2])
print(name[3])
print(name[4])
print(name[5])
print(name[6])
print(name[7])
print(name[8])
print(name[9])
输出结果:
邱
勋
涛
真
的
太
T
M
帅
了
切片:
例1:
#注意 下标是从0开始计算下标,不是从1
name = '邱勋涛真的太TM帅了'
print(name[0:10])#0代表最开始的下标,10代表最后一个下标,意思是只能取0(包括0)到10(不包括10)的下标
输出结果:
邱勋涛真的太TM帅了
例2:
name = '邱勋涛真的太TM帅了'
print(name[2:6])#打印下标2到5的
打印结果:
涛真的太
例3:
name = '邱勋涛真的太TM帅了'
print(name[2:])#打印下标2到后面全部的
输出结果
涛真的太TM帅了
例4:
name = '邱勋涛真的太TM帅了'
print(name[:])#打印全部
输出结果:
邱勋涛真的太TM帅了
例5:
name = '邱勋涛真的太TM帅了'
print(name[1:-2])#打印下标为1开始到倒数第三个
print(name[2:-4])#打印下标为2到倒数第五个
输出结果:
勋涛真的太TM
涛真的太
例6:
name = '邱勋涛真的太TM帅了'
print(name[-4:-2])#打印下标为-4(从后往前输第四个)开始到倒数第三个
print(name[-6:-4])#打印下标为-6(从后往前输第六个)开始到倒数第四个
输出结果:
TM
的太
1.4 字符串常见操作
1.4.1 find
例1:
#find相关操作
#语法:str.find(str, beg=0 end=len(string))
# str --- 此选项指定要搜索的字符串
# beg --- 这是开始索引,默认情况下为 0
# end ---这是结束索引,默认情况下它等于字符串的长度
#返回值---检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
contents = 'I love you forever'
qxt = contents.find('love')
print(qxt)
输出结果:
2
例2:
contents = 'I love you forever'
qxt = contents.find('love',0 , 1)
print(qxt)
输出结果:
-1
1.4.2 index
跟find()方法一样,只不过如果str不在 mystr中会报一个异常
contents = 'I love you forever'
qxt = contents.index('love',0,1)
print(qxt)
1.4.3 count
例1:
#语法:str.count(sub, start= 0,end=len(string))
# sub ---搜索的子字符串
# start ---字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0
# end --- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置
#返回值---sub出现的次数
contents = 'I love you forever,I love you forever'
qxt = contents.count('love')#获取love出现在contents的次数
print(qxt)
输出结果:
2
例2:
contents = 'I love you forever,I love you forever'
qxt = contents.count('e')#获取e出现在contents的次数
print(qxt)
输出结果:
6
1.4.4 replace
#语法---str.replace(str1, str2, count)
contents = 'I love you love forever'
xt=contents.replace('love',"loving")这里的count默认为-1,全部替换
qxt = contents.replace('love',"loving",1)# count为1代表如果contents有多个匹配的值,那么替换一次,可以根据需求指定次数,如果不写默认值是-1,全部都替换
print(xt)#I loving you loving forever
print(qxt)#I loving you love forever
输出结果:
I loving you loving forever
I loving you love forever
1.4.5 split
例1:
# 以 seq为分隔符对字符串mystr分隔,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串, 最后的结果存放到列表里
#
# str.split(seq, maxsplit)
str="2021-520-1314"
str01=str.split("-")#相当于把 - 去掉,其他的字符串依次存入列表
str02=str.split("0")#相当于把 0 去掉,其他的字符串依次存入列表
print(str01)
print(str02)
mystr="qxt zmr qxh zxb qxh qjy qc "
str03=mystr.split()#相当于把空格去掉,其他的字符串依次存入列表
print(str03)
输出结果:
['2021', '520', '1314']
['2', '21-52', '-1314']
['qxt', 'zmr', 'qxh', 'zxb', 'qxh', 'qjy', 'qc']
例2:
mystr="qxt zmr qxh zxb qxh qjy qc qx qx "
str03=mystr.split("qx")#相当于把qx去掉,其他的字符串依次存入列表,会多出空字符串
print(str03)
输出结果:
['', 't zmr ', 'h zxb ', 'h qjy qc ', ' ', ' ']
例3:
str="2021-520-521-1314"
str01=str.split("-",2)#相当于把前俩个 - 去掉,其他的字符串依次存入列表
print(str01)
输出结果:
['2021', '520', '521-1314']
1.4.6 capitalize
str="wo ai ni "
str01=str.capitalize()#capitalize:把开头第一个字母转化为大写
print(str01)
输出结果:
Wo ai ni
1.4.7 title
str="wo ai ni "
str01=str.title()#title:把每个单词首字母转化为大写
print(str01)
输出结果:
Wo Ai Ni
1.4.8 startswith
str="wo ai ni "
str01=str.startswith("wo")#startswith:检查字符串是否是以 wo 开头, 是则返回 True,否则返回 False(True)
str02=str.startswith("ai")#startswith:检查字符串是否是以 wo 开头, 是则返回 True,否则返回 False(False)
print(str01)
print(str02)
输出结果:
True
False
1.4.9 endswith
str="wo ai ni"
str01=str.endswith("ni")# endswith:检查字符串是否以ni结束,如果是返回True,否则返回 False.(True)
str02=str.endswith("ai")# endswith:检查字符串是否以ni结束,如果是返回True,否则返回 False.(False)
print(str01)
print(str02)
输出结果
True
False
1.4.10 lower
str="Wo Ai NI"
str01=str.lower()#lower:把所有大写的字母转化为小写
print(str01)
输出结果:
wo ai ni
1.4.11 upper
str="wo ai ni yi sheng yi shi"
str01=str.upper()#lower:把所有小写的字母转化为大写
print(str01)
输出结果:
WO AI NI YI SHENG YI SHI
1.4.12 ljust
# 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
# 语法----str.ljust(width)
str01 = 'hello'
str02 = str01.ljust(10)#ljust:hello占五个字符,向右填充5个才能到达10
print(str02, end='-')#end='-'这个是为了让我们更清楚右边还有5个空格
输出结果:
hello -
1.4.13 rjust
# 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
# 语法----str.ljust(width)
str01 = 'hello'
str02 = str01.rjust(10)#ljust:hello占五个字符,向左填充5个才能到达10
print(str02)
输出结果:
hello
1.4.14 center
# 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
# str.center(width)
str01 = 'qxtqxtqxt'
str02 = str01.center(26)#center:在25个字符中居中
print(str02,end="-")#end='-'这个是为了让我们更清楚左右两边还有空格
输出结果:
qxtqxtqxt -
1.4.15 lstrip
str01 = ' qxtqxtqxt'
str02 = str01.lstrip()#lstrip:删除左边空白字符
print(str02)
输出结果:
qxtqxtqxt
1.4.16 rstrip
str01 = 'qxtqxtqxt '
str02 = str01.rstrip()#lstrip:删除右边空白字符
print(str02)
输出结果:
qxtqxtqxt
1.4.17 strip
str01 = ' zmrzmrzmr '
str02 = str01.strip()#strip:删除两端空白字符
print(str02)
输出结果:
zmrzmrzmr
1.4.18 rfind
# 类似于 find()函数,不过是从右边开始查找.
# mystr.rfind(str, start=0,end=len(mystr) )
str01 = 'hello world hello python'
print(str01.rfind('hello')) # 12
print(str01.rfind('nihao')) # -1
# 注意下面代码的查找范围
print(str01.rfind('hello', 0, 5)) # 0)
输出结果:
12
-1
0
1.4.19 rindex
# 类似于 index(),不过是从右边开始.
# str.rindex( str, start=0,end=len(mystr))
str01 = 'hello world hello python'
print(str01.rindex('hello'))
print(str01.rindex('nihao'))
输出结果:
1.4.20 partition
str01 = 'hello world hello python'
str02=str01.partition("world")#partition:把str01以str分割成三部分,str前,str和str后
print(str02)
输出结果:
('hello ', 'world', ' hello python')
1.4.21 rpartition
str01 = 'hello world hello python world'
str02=str01.rpartition("world")#rpartition:类似于 partition()函数,不过是从右边开始.
print(str02)
输出结果:
('hello world hello python ', 'world', '')
1.4.22 splitlines
str01 = 'hello\nworld\nhello\nqxt'
print(str01)
str02 = str01.splitlines()#splitlines:按照行分隔,返回一个包含各行作为元素的列表
print(str02)
输出结果:
hello
world
hello
qxt
['hello', 'world', 'hello', 'qxt']
1.4.23 isalpha
str01 = 'i love you 999'
str02 = str01.isalpha()#isalpha:如果 str01 所有字符都是字母 则返回 True,否则返回 False
print(str02)
str03="hhhhhhhhh"
str04=str03.isalpha()#isalpha:如果 str03 所有字符都是字母 则返回 True,否则返回 False
print(str04)
输出结果:
False
True
1.4.24 isdigit
str01 = '999'
str02 = str01.isdigit()#isdigit:如果 str01 只包含数字则返回 True 否则返回 False.
print(str02)
str03="hhhhhhhhh66666"
str04=str03.isdigit()#isalpha:如果 str03 所有字符都是字母 则返回 True,否则返回 False
print(str04)
输出结果:
True
False
1.4.25 isalnum
str01 = '999'
str02 = str01.isalnum()#isalnum:如果 str01 所有字符都是字母或数字则返回 True,否则返回 False
print(str02)
str03="hhhhhhhhh"
str04=str03.isalnum()#isalnum:如果 str03 所有字符都是字母或数字则返回 True,否则返回 False
print(str04)
str05="hhhhhhh6666666666 999"
str06=str05.isalnum()#isalnum:如果 str05 所有字符都是字母或数字则返回 True,否则返回 False
print(str06)
输出结果:
True
True
False
1.4.26 isspace
str =' '
str01 = str.isspace() # 如果 str 中只包含空格,则返回 True,否则返回 False.
print(str01)
str02='666999'
str03=str02.isspace()# 如果 str02 中只包含空格,则返回 True,否则返回 False.
print(str0
输出结果:
True
False
1.4.27 jion
str='----'
list=["jiang","xi","sheng","gan","zhou","shi"]#str 中每个元素后面插入str,构造出一个新的字符串
list01=str.join(list)
print(list01)
输出结果:
jiang----xi----sheng----gang----zhou----shi
二、列表
1.1 列表介绍
list = ["jiang", "xi", "sheng", "gan", "zhou", "shi"]
print(list[0])#数字代表每个列表里面字符串的下标
print(list[1])
print(list[2])
print(list[3])
print(list[4])
print(list[5])
输出结果:
jiang
xi
sheng
gan
zhou
shi
1.2列表的循环遍历
例1:for 循环
#for循环打印列表内容
list = ["jiang", "xi", "sheng", "gan", "zhou", "shi"]
for name in list:
print(name)
输出结果:
jiang
xi
sheng
gan
zhou
shi
例2:while循环
# while循环打印列表内容
list = ["jiang", "xi", "sheng", "gan", "zhou", "shi"]
lenth = len(list) # 获取列表的长度
print("列表的长度:%d" % lenth)
i = 0
while i < lenth:
print(list[i])
i += 1
输出结果:
列表的长度:6
jiang
xi
sheng
gan
zhou
shi
1.3 列表的常见操作
1.3.1 append(增)
#append:可以向列表添加元素
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
list01.append("邱勋涛")
print(list01)
输出结果:
['鹿晗', '吴一凡', '黄子韬', '张艺兴', '邱勋涛']
1.3.2 extend和append的比较(增)
extend可以将另一个集合中的元素逐一添加到列表中
append可以将另一个集合添加到列表中
#extend可以将另一个集合中的元素逐一添加到列表中
list01=["1","2","3"]
list02=["4","5","6"]
list01.extend(list02)
print("entend输出结果:%s"%list01)
#append可以将另一个集合添加到列表中
list03=["1","2","3"]
list04=["4","5","6"]
list03.append(list04)
print("append输出结果:%s"%list03)
输出结果:
entend输出结果:['1', '2', '3', '4', '5', '6']
append输出结果:['1', '2', '3', ['4', '5', '6']]
1.3.3 insert(增)
# insert(index, object) 在指定位置index前插入元素object
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
list01.insert(1,"邱勋涛")
print(list01)
输出结果:
['鹿晗', '邱勋涛', '吴一凡', '黄子韬', '张艺兴']
1.3.4 修改下标(改)
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
print("-----修改之前,列表list01的数据-----")
for name in list01:
print(name)
list01[1]="邱勋涛"#下标为1的修改为邱勋涛
list01[3]="牛马子"#下标为3的修改为牛马子
print("-----修改之后,列表list01的数据-----")
for name in list01:
print(name)
输出结果:
-----修改之前,列表list01的数据-----
鹿晗
吴一凡
黄子韬
张艺兴
-----修改之后,列表list01的数据-----
鹿晗
邱勋涛
黄子韬
牛马子
1.3.5 in ,not in(查)
例1:in
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
find_name=input("请输入你要查找的名字:")
if find_name in list01:
print("找到了相同的名字")
else:
print("没有找到相同的名字")
输出结果1:
请输入你要查找的名字:鹿晗
找到了相同的名字
输出结果2:
请输入你要查找的名字:邱勋涛
没有找到相同的名字
例2:not in
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
find_name=input("请输入你要查找的名字:")
if find_name not in list01:
print("没有到了相同的名字")
else:
print("找到了相同的名字")
输出结果1:
请输入你要查找的名字:邱勋涛
没有到了相同的名字
输出结果2:
请输入你要查找的名字:吴一凡
找到了相同的名字
1.3.6 index(查)
#语法: L.index(obj[,start=0[,stop=len(L)]])
# 参数:
# obj -- 查找的对象。
# start -- 可选参数,开始索引,默认为0。(可单独指定)
# stop -- 可选参数,结束索引,默认为列表的长度。(不能单独指定
#返回值:如果包含检索的对象返回开始的索引值,否则抛出异常。
list01=["鹿晗","吴一凡","黄子韬","张艺兴"]
list01.index("张艺兴",0,1)
print(list01)
1.3.7 count(查)
list01=["a",'b','c','a','d','d']
print(list01.count('a'))#count:数量,查询列表里面有多少个a
输出结果:
2
1.3.8 del(删除)
del:根据下标进行删除
movieName = ['邱勋涛', '方钻', '马盛瑶', '施启斌', '牛马子', '颠佬']
print('------删除之前------')
for tempName in movieName:
print(tempName)
del movieName[2]
print('------删除之后------')
for tempName in movieName:
print(tempName)
输出结果:
------删除之前------
邱勋涛
方钻
马盛瑶
施启斌
牛马子
颠佬
------删除之后------
邱勋涛
方钻
施启斌
牛马子
颠佬
1.3.9 pop(删除)
pop:删除最后一个元素
movieName = ['邱勋涛', '方钻', '马盛瑶', '施启斌', '牛马子', '颠佬']
print('------删除之前------')
for tempName in movieName:
print(tempName)
movieName.pop()
print('------删除之后------')
for tempName in movieName:
print(tempName)
输出结果:
------删除之前------
邱勋涛
方钻
马盛瑶
施启斌
牛马子
颠佬
------删除之后------
邱勋涛
方钻
马盛瑶
施启斌
牛马子
1.3.10 remove(删除)
remove:根据元素的值进行删除
movieName = ['邱勋涛', '方钻', '马盛瑶', '施启斌', '牛马子', '颠佬']
print('------删除之前------')
for tempName in movieName:
print(tempName)
movieName.remove("方钻")
print('------删除之后------')
for tempName in movieName:
print(tempName)
输出结果:
------删除之前------
邱勋涛
方钻
马盛瑶
施启斌
牛马子
颠佬
------删除之后------
邱勋涛
马盛瑶
施启斌
牛马子
颠佬
1.3.11 sort, reverse(排序)
1.sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
reverse方法是将list逆置。
qxt = [2, 6, 3, 9, 12, 10, 8]
qxt.reverse()#将列表顺序逆转排序
print(qxt)
print("--------------------------------")
qxt.sort()#将列表内容从小到大排序
print(qxt)
print("----------------------------------")
qxt.sort(reverse=True)#参数reverse=True可改为倒序,由大到小
print(qxt)
输出结果:
[8, 10, 12, 9, 3, 6, 2]
--------------------------------
[2, 3, 6, 8, 9, 10, 12]
----------------------------------
[12, 10, 9, 8, 6, 3, 2]
1.3.11 列表嵌套应用
一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
import random
# 定义一个列表用来保存3个办公室
offices = [[],[],[]]
# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']
i = 0
for name in names:
index = random.randint(0,2)
offices[index].append(name)
i = 1
for tempNames in offices:
print('办公室%d的人数为:%d'%(i,len(tempNames)))
i+=1
for name in tempNames:
print("%s"%name,end='')
print("\n")
print("-"*20)
输出结果:
办公室1的人数为:3
AEG
--------------------
办公室2的人数为:4
BCFH
-------------------
办公室3的人数为:1
D
--------------------