python学习day3------列表、元组、字符串操作

时间:2022-03-09 10:37:10

列表是有序的,支持增删改查,可以嵌套列表、字典(任何东西)

元组是有序的,只读列表

字符串的操作,可查,不可修改(本质新新的内容覆盖了原来的)

字典是无序的,通过K:V找元素,可以嵌套列表、字典

集合是无序的

一、列表

变量名后加中括号[],接下来介绍对列表进行查操作

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
print(name[0],name[2])#取出已知位置的数据,因为计算机在存储数据的时候是以0为开始位置
#>>>>zhangsan wangmazi #查
#切片
print(name[1:3])#从计算机位第一个位取到第二位:顾首不顾尾,
#>>>>['lisi', 'wangmazi'] print(name[4])#在知道列表有多长的时候用这个方法可以取到列表最后一位
#>>>>gousheng print(name[-1])#在不知道长度有多长的时候用这个方法可以取到最后一位
#>>>>gousheng print(name[-2])#亦可理解位从0往左数
#>>>>chenwu print(name[-2:])#即便是写的是负数的位置表示,也是自左往右数,
# 但是有一个机制就是顾首不顾尾,
# 但我想取最后一位的时候就会被忽略掉,
# 所以这个时候在冒号后面什么都不写就可以
#>>>>['chenwu', 'gousheng'] print(name[0:3])
#>>>>['zhangsan', 'lisi', 'wangmazi']
print(name[:3])#这两个效果一样,前面若是0的话就可以省略不写
#>>>>['zhangsan', 'lisi', 'wangmazi']

对列表进行增、替换、删等操作

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng"]
#增
#追加数据
name.append("quandan")
#>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #插在指定位置
name.insert(1,"mingzi")#想把数据插在第几机器位就直接写
#>>>>['zhangsan', 'mingzi', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #改
name[2] = "qiangzi"#把在机器位置2上的lisi换下来用qiangzi
#>>>>['zhangsan', 'mingzi', 'qiangzi', 'wangmazi', 'chenwu', 'gousheng', 'quandan'] #删
name.remove("wangmazi")#在知道名字的情况下删除wangmazi
del name[3] #删除机器位置3上的名字
name.pop()#默认不输入机器位置就删除最后一个,如果输入机器位就跟del name[3]一样
print(name)

清空、反转、排序、扩展

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen test = []#列表的命名形式 name = ["zhangsan","lisi","wangmazi","chenwu","gousheng","lisi"]
#查找wangmazi位置
print(name.index("wangmazi"))
#>>>> 2
#找出上述找到的位置删的名字
print(name[name.index("wangmazi")])
#>>>>wangmazi #列表允许出现多个名字一样的
print(name.count("lisi"))#查找叫lisi的有几个 #name.clear()#清空列表
#name.reverse()#反转列表
#name.sort()#排序,按照ascll码进行排序
name1 = [1,2,3,4]
name.extend(name1)#扩展,将name1添加到name后面,name1没有删除
print(name)
#>>>>['zhangsan', 'lisi', 'wangmazi', 'chenwu', 'gousheng', 'lisi', 1, 2, 3, 4]

复制copy、深copy

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
import copy test = []#列表的命名形式
#name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
#因为他们共同指向内存地址,修改name2,name也会变
name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"] name2 = name.copy()#复制一份copy只是浅得复制了一些,只复制第一层列表
name[2] = "王麻子"
name[3][0] = "ERIC"
print(name,"\n",name2) #这个是赋值
name2 = name
#深copy就是完全复制,需要添加copy模
name2 = copy.deepcopy(name)

分位切片

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
import copy test = []#列表的命名形式
#name[]是一个列表在内存中存储name指向存储的地址,你更改name里的东西name2也会跟着变得
#因为他们共同指向内存地址,修改name2,name也会变
name = ["zhangsan","lisi","wangmazi",["eric","jack"],"chenwu","gousheng","lisi"]
#跳两位进行切片
print(name[0:-1:2])#这个语句得作用就是从0到-1位每跳两位进行切

二、元组

查找数据的位置

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #元组就两个功能count,index,得到机器位
name = ("zhangsan","lisi","wangmazi")
print(name.count("zhansgan"))
#>>>>0
print(name.index("lisi"))
#>>>>1

三、字符串操作

首字母大写

统计字符串有几个字母

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen
#字符串操作
name = "my {name} is {eric}"
#首字母大写
print(name.capitalize())
#>>>Eric #统计字符串---下面的程序是统计字符串a有多少个
print(name.count("a"))
#>>>>0 #将字符串用50个*包裹着写在中间
print(name.center(50,"*"))
#>>>>***********************eric********************** #判断字符串是不是以ic结尾
print(name.endswith("ic"))
#>>>>True #在字符串中写一个tab键,它将tab转换多少个空格
#name ="eri\tc"
print(name.expandtabs(tabsize=30))
#>>>>eri c #找字符串相应元素的机器位数
print(name.find("name"))
#>>>>3 #判断是否有阿拉字符
print("abc123".isalnum())
#判断是否包含英文字符(返回True或False)
print("asA".isalpha())
#判断是否为10进制
print("1A".isdecimal())
#判断是不是一个整数
print("1A".isdigit())
#判断是不是一个合法的标识符(变量名)
print("1A".isidentifier())
#判断是不是小写
print("aA".islower())
#检测字符串是否只由数字组成。这种方法是只针对unicode对象。
print("1a".isnumeric())
#判断是不是标题,判断标准是每个首字母大写
print("My name is title".istitle())
#设备终端文件用此方法判断
print("My name is ".isprintable())
#判断是不是全部大写
print("aD".isupper())
#将字符串区分开
print("+".join(["","",""]))
#>>>>1+2+3
#保证我的字符串长度为50,不够的在后面以*补全
print(name.ljust(50,"*"))
#保证我的字符串长度为50,不够的在前面补上-
print(name.rjust(50,"-"))
#把大写变成小写
print("Eric".lower())
#把小写换成大写
print("Eric".upper())
#从左边去掉空格或者回车
print("\nEric".lstrip())
#从右边去掉空格或者回车
print("Eric\n".rstrip())
#去掉两边的空格或者回车
print("\nEric\n".strip())
#命名的时候前后的位数一致,把字母与数字对应,然后显示p如果有对应的字母换作后面的显示(嗯古时候密文一样)
p = str.maketrans("abcde","")
print("Eric".translate(p))
#>>>>Eri3 #替换(把c换成大写的C)后面还可以跟一个参数。替换几个(print("Eric c".replace("c","C",1)))
print("Eric c".replace("c","C"))
#找到最后边那个值得下标返回
print("eric ic".rfind("c"))
#把字符串按照空格(默认)分成列表
print("eric is ".split())
#把字符串按照行分
print("eric\n c".splitlines())
#全部变成大写
print("eric c".swapcase())
#前边不够50位自动用0填充
print("eric c".zfill(50))

四、字典操作

增删查改

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}
#字典是无需得没下标,有key
print(info)
#改字典stu1101(若不存在则创建)
info["stu1101"] = "武藤兰"
#查字典
print(info["stu1101"])
#删除字典
del info["stu1101"]
#指定删除
info.pop("stu1101")#标准姿势
#随机删除
info.popitem() #查
print(info.get("stu1103"))#得到其key对应得值
print("stu1103" in info)#info.has_key("1103") in py2.x

取值

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}
b = {
'stu1101': "Eric",
1:3,
2:5
} #升级:有相同得key就覆盖,没有得就创建
info.update(b)
print(info) #初始化一个新的字典(作用跟copy一样)
c = dict.fromkeys([6,7,8],[1,{"name":"eric"},666])
print(c)
c[7][1]["name"] = "ASD"
print(c)
#{8: [1, {'name': 'eric'}, 666], 6: [1, {'name': 'eric'}, 666], 7: [1, {'name': 'eric'}, 666]}
#{8: [1, {'name': 'ASD'}, 666], 6: [1, {'name': 'ASD'}, 666], 7: [1, {'name': 'ASD'}, 666]} #字典变成列表
print(info.items()) av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
},
"大陆":{
"":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}
#修改
av_catalog["大陆"][""][1] = "可以在国内做镜像" #只打印关键字
print(info.keys()) #先去*里取值,如果没有就创建,有就把它取出来
av_catalog.setdefault("*",{"www.baidu.com":[1,2]})
print(av_catalog )

字典的循环

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #Key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
} #字典的循环
for i in info:
print(i,info[i]) #先转成列表在循环输出
for k,v in info.items():
print(k,v) #前者快后者慢

五、集合

集合的运算:交并补差,对称差集

 #!/usr/bin/env python
#-*- Coding:utf-8 -*-
# Author:Eric.Shen #集合也是无序的
list1 = [1,5,9,4,8,3,45,7,]
list1 = set(list1) list2 = set([2,6,5,7,9,1,56,4])
print(list1,list2) #交集,list1与2的交集
print(list1.intersection(list2)) #运算符表达交集 a = t & s
#并集1与2的并集
print(list1.union(list2)) #运算符表达并集 b = t | s
#对称(反向)差集 交集的补集,全集是1和2 这是除去他们的交集剩下的元素
print(list1.symmetric_difference(list2)) #运算符表达对称差集 d = t ^ s
#差集1与2的差集,1与 1和2的交集之外的元素
print(list1.difference(list2)) #运算符表达交集 c = t - s #子集
list3 = set([1,3,7]) #3是1的子集,返回为True
print(list3.issubset(list1))
#1是3的父集,返回为True
print(list1.issuperset(list3)) #3与4有没有交集(如果3和4没有交集则返回true)
list4 = set([5,6,8])
print(list3.isdisjoint(list4))

集合的增删

 #集合的添加  无序的
list1.add(999)
list1.update([999,77,55])
print(list1) #集合的删除
print(list1.pop())#删除任意的,并返回删除的那个内容
print(list1.remove(44444))#删除不存在的会报错
list1.discard(999999)#删除不存在的不会报错