字符串-列表-字典随笔
字符串
通过双引号或者单引号引起来的字符称之为字符串。
字符串的大小写转换
string = "The is string!"
# 将所有字母转换为小写
print(string.lower())
# 将所有字母转换为大写
print(string.upper())
# 将每一个单词的首字母转换为大写
print(string.title())
# 将字符串中的第一个字母大写
print(string.capitalize())
切割字符串
# python使用内置函数split进行切片,默认为空格,切片后字符串类型改编为列表类型,使用type函数可以查看数据类型
string = "The is string!"
print(type(string))
list = string.split()
print(list)
# split函数接收一个参数,参数为任意字符
list = string.split('is')
print(list)
查找字符串
# python可以根据关键字在字符串中查找,找到后返回对应的下标,找不到则返回-1
# find从做想右查找,rfind从右向左查找
string = "The is string!"
print(string.find('is'))
print(string.rfind('is'))
# 通过索引查找字符是否在指定位置
# 示例中从第0位开始查找,在第五位结束,查找是否包含The,找到则返回0,否则报ValueError: substring not found
print(string.index('The',0,5))
匹配开头或者结尾
python可以通过startswith或者endswith匹配开头或者结尾,匹配到则返回True否则返回False
在查找之前可以使用lower或者upper统一大小写进行查找。
string = "The is string!"
print(string.lower().endswith('ing!'))
print(string.upper().startswith('THE'))
print(string.lower().startswith('the'))
统计字符串
在pythn中统计字符在字符串中出现的次数,使用count内置函数实现
# 统计字符串中出现is的次数,0,-1是指从第一个元素匹配到最后一个元素
string = "The is string!"
print(string.count('is',0,-1))
祛除空白
在python中使用strip、rstrip、lstrip分别祛除所有空白,右侧空白和左侧空白
string = " The is string! "
print(string.strip())
print(string.lstrip())
print(string.rstrip())
替换字符串
python使用replace进行字符串替换,常用在处理文件时使用
string = " The is string! "
print(string.replace("The","the"))
print(string.replace(" ","-"))
返回对应的格式
# 判断字符串是否只包含了对应的格式,返回True和False
string = " The is string! "
print(string.isspace())
print(string.isalnum())
print(string.islower())
print(string.isalpha())
print(string.isascii())
print(string.isidentifier())
print(string.istitle())
print(string.istitle())
字符串格式化
拼接字符串
使用+号拼接,使用+号拼接时需要注意,左右两边的数据类型必须是字符串
str1 = "你好"
str2 = "索尼呀!"
print(str1+str2)
使用%号拼接,拼接时占位符需要指定数据类型
name = "张三"
gender = "男"
age = 2
print("%s:性别%s,%d岁"%(name,gender,age))
使用format格式化
name = "张三"
gender = "男"
age = 2
# 通过位替换
print("姓名:{0},性别:{1},年龄:{2}".format(name,gender,age))
# 通过变量名替换
print("姓名:{name},性别:{gender},年龄:{age}".format(name=name,gender=gender,age=age))
字符串拼接
python使用join函数将字符串拼接在一起,通过指定拼接符号进行拼接
# str作为拼接的符号
# seq作为待拼接的字符
str = '-'
seq = "a","b","c"
print(str.join(seq))
列表
列表增删改查
定义列表
python中对列表的新增操作有两种分别是insert和append,insert是在指定的位置新增数据,append则在列表的最后一位新增数据
ls = []
# 使用append方法在列表的最后一位增加
ls.append('10')
# 使用insert在指定位增加
ls.insert(1,'20')
修改列表数据
python中修改列表中的数据通过位操作
# 修改列表中的数据
ls = []
# 使用append方法在列表的最后一位增加
ls.append('10')
# 使用insert在指定位增加
ls.insert(1,'20')
# 修改第二位的数据为40
ls[1] = 40
print(ls)
# 修改倒数第二位的数据为30
ls[len(ls)-2] = 30
删除列表中的数据
python删除列表中的数据通过pop,del,clear,remove等方法实现
ls = []
# 使用append方法在列表的最后一位增加
ls.append('10')
# 使用insert在指定位增加
ls.insert(1,'20')
# 通过pop删除指定位
# 删除最后一位,以下三种示例表示了三种删除最后一位的方法,pop默认删除最后一位所在的数据
ls.pop(len(ls)-1)
ls.pop(-1)
ls.pop()
# 通过remove删除指定数据,不能按索引删除,需要按照元素删除
ls.remove('10')
查询列表中的数据
python中查询数据有两种方式,一种是通过位查询数据,一种是通过数据查询所在的位
ls = []
# 使用append方法在列表的最后一位增加
ls.append('10')
# 使用insert在指定位增加
ls.insert(1,'20')
# 查询第0位到第3位所在的元素,不包含第3也就是0,1,2索引所在的数据
print(ls[0:3])
# 通过元素定位索引,成功返回对应的索引序号,否则返回ValueError: '20' is not in list
print(ls.index('20'))
# 统计指定元素出现的次数
print(ls.count('20'))
删除列表
python中删除列表有两种方式,分别是del和clear
clear是清空整个列表,但列表的内存依然保存
del 是将整个内存全部删除
ls = []
# 使用append方法在列表的最后一位增加
ls.append('10')
# 使用insert在指定位增加
ls.insert(1,'20')
ls.clear()
del ls
组合列表
python中想列表增加元素除了使用增加的几种方法还可以合并其他列表实现
ls1 = [1,2,3,4,5]
ls2 = [6,7,8,9,10]
ls1.extend(ls2)
print(ls1)
列表复制
python中list的copy有三种分别是直接赋值、浅copy和深copy
直接赋值是最简单的方式,但是新声明的变量如果改变值,原来的也会跟着改变.
浅copy则只能处理单层列表的形式,嵌套列表无法copy,嵌套的值如果被改变则原来的值依然会被该改变
深copy不管原来的值如何,全部copy过来,需要引入copy模块
直接赋值
# 无论怎么改变,两个列表一样,原理是修改的内存地址是一个
ls1 = [1,2,[3,4,5]]
ls2 = ls1
ls1[0] = 2
print(ls1)
print(ls2)
浅copy
# 第一层就不同,第二层则完全相同
ls1 = [1,2,[3,4,5]]
ls2 = ls1.copy()
ls2[0] = 2
print(ls1)
print(ls2)
ls2[2][1] = 2
print(ls1)
print(ls2)
深copy
# 怎么修改都不一样,因为深copy是直接开辟了一块新的内存,跟原内存没有任何关联
import copy
ls1 = [1,2,[3,4,5]]
ls2 = copy.deepcopy(ls1)
ls2[0] = 2
print(ls1)
print(ls2)
ls2[2][1] = 2
print(ls1)
print(ls2)
列表排序
python中可以通过sort进行排序,排序的方式根据参数决定或者通过函数进行排序
默认排序
#sort函数默认根据生序排序,根据asice码进行排序。数字在字母前面
aList = [123, 'Google', 'Runoob', 'Taobao', 'Facebook'];
aList.sort()
print("List : ", aList)
通过指定函数排序
reverse默认是False为正序,True为倒序
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(reverse=True,key=takeSecond)
print('排序列表:', random)
random.sort(reverse=False,key=takeSecond)
print('排序列表:', random)
列表的循环
python循环列表的几种方式,这里只举例,不做任何解释
ls1 = [1,2,3,4,5]
for i in range(0,len(ls1)):
print(ls1[i])
ls1 = [1,2,3,4,5]
for i in ls1:
print(i)
内置类__imul__
python的内置方法__imul__的作用是将一个列表在另外一个列表里复制多少份
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
print(random.__imul__(4))
字典
字典是python中实现集合的方式,通过k:v的方式组成。字典是无序的。自定通过{}定义
字典增、删、改、查
字典定义,新增
由于pythn是动态类型语言,只要值的类型为{}即为字典
student = {"姓名":"张三","年龄":"18"}
删除字典,清空字典,删除元素
删除字典元素使用pop方法,pop方法传递一个元素的key
student = {"姓名":"张三","年龄":"18"}
student.pop("姓名")
print(student)
清空字典元素使用clear,clear会将整个字典清空
student = {"姓名":"张三","年龄":"18"}
student.clear()
print(student)
删除字典使用del方法
student = {"姓名":"张三","年龄":"18"}
del student
print(student)
删除字典的第一个元素并且返回一个元祖,使用popitem方法
student = {"姓名":"张三","年龄":"18"}
student.popitem()
字典修改元素
向student中增加一个元素
student = {"姓名":"张三","年龄":"18"}
student["身高"] = "185cm"
print(student)
修改student姓名元素,使用update方法可以更新某一个元素的值,update(key=value),注意key不要添加引号
student = {"姓名":"张三","年龄":"18"}
student["姓名"] = "李四"
print(student)
student.update(姓名="李四")
字典查询
简单的打印字典,可以使用get方法获取某一个元素的值
student = {"姓名":"张三","年龄":"18"}
print(student)
print(student.get("姓名"))
循环字典,输出key,value,使用items方法
student = {"姓名":"张三","年龄":"18"}
for k,v in student.items():
print(k,v)
循环字典,列出所有key,使用keys方法
student = {"姓名":"张三","年龄":"18"}
print(student.keys())
for k in student.keys():
print(k)
获取所有的值,并将值返回一个列表,使用values
student = {"姓名":"张三","年龄":"18"}
print(student.values())
for v in student.values():
print(v)
复制字典
复制字典使用copy方法,copy之后修改元素不会影响旧的字典
student = {"姓名":"张三","年龄":"18"}
newstudent = student.copy()
newstudent["姓名"] = "张三"
print(newstudent)
print(newstudent)
嵌套字典
ipList = [
{ # vip字段为浮动ip
"vip":"1.1.1.1",
# master节点的数据为主节点的数据
"master":{
# ip地址对应的是服务器的主IP地址
"ip":"1.1.1.2",
# netcard为网卡名称
"netcard":"eth0",
# netmask为子网掩码
"netmask":"255.255.255.0",
# user为所有主实例中的用户名和密码,密码字段需解密
"user":[
{
"username":"root",
"password":"root"
},
{
"username":"root",
"password":"root"
},
{
"username":"root",
"password":"root"
}
]
},
# slave节点的数据为主节点的数据
"slave":{
# ip地址对应的是服务器的从IP地址
"ip":"1.1.1.3",
# netcard为网卡名称
"netcard":"eth0",
# netmask为子网掩码
"netmask":"255.255.255.0",
# user为所有主实例中的用户名和密码,密码字段需解密
"user":[
{
"username":"root",
"password":"root"
},
{
"username":"root",
"password":"root"
},
{
"username":"root",
"password":"root"
}
]
},
},
{
"vip": "198.198.3.149",
"master": {
"ip": "1.1.1.4",
"netcard": "eth0",
"netmask": "255.255.255.0",
"user": [
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
}
]
},
"slave": {
"ip": "1.1.1.5",
"netcard": "eth0",
"netmask": "255.255.255.0",
"user": [
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
}
]
},
},
{
"vip": "198.198.3.1450",
"master": {
"ip": "1.1.1.6",
"netcard": "eth0",
"netmask": "255.255.255.0",
"user": [
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
}
]
},
"slave": {
"ip": "1.1.1.7",
"netcard": "eth0",
"netmask": "255.255.255.0",
"user": [
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
},
{
"username": "root",
"password": "root"
}
]
},
}
]
# 将vip对应的master和slave做一个对应关系
for vip in ipList:
for userinfo in range(0,len(vip["master"]["user"])):
print(vip["vip"],vip["master"]["ip"],vip["master"]["user"][userinfo]["username"],vip["master"]["user"][userinfo]["password"])
print(vip["slave"]["ip"], vip["slave"]["user"][userinfo]["username"],
vip["slave"]["user"][userinfo]["password"])