基础的东西啊,每日一背
#字符串的常用方法
#字符串一旦定义不能修改
s = 'abcBCDabc'
new_s = s.strip()#默认去掉字符串两边的空格和换行符
print(new_s)
new_s2 = s.strip(',')#传进什么就把什么去掉
print(s.rstrip())
print(s.lstrip())
print(s.count('a'))#某个字符串出现的次数
print(s.index('a'))#找某个字符串的下标
print(s.find('d'))#找某个字符串的下标
#index和find的区别:
# 字符串存在时无区别,
# 字符串不存在时 find返回-1
# index报错ValueError: substring not found
print(s.replace('abc','ABC',1))#ABCBCDabc 替换
print(s.upper())#变成大写字母
print(s.lower())#变成小写字母
print(s.capitalize())#首字母大写
print(s.startswith('p'))#以什么开头 返回ture false
print(s.endswith('.jpg'))#以什么结尾返回ture false
# s.islower()#判断是否全是小写
# s.isupper()#判断是否全是大写
s.istitle()#判断是不是标题 首字母大写就是标题吧 没什么卵用
s.isdigit()#判断是否为纯数字
print(s.center(10,'*'))#把字符串放中间,不够位的用指定符号补齐
s.isalpha()#判断是否是字母或是汉字,b不能有数字和特殊符号
s.isspace()#是否时空格
s.isidentifier()#判断是否是一个合法的变量名
s.isalnum()#只要没有特殊字符就返回true
s = 'insert into user value (%s,%s,%s,%s,s%)%(username,password,addr,email,phone)'
s4 = 'insert into user value ({username},{password},'\
'{addr},{email},{phone});'
new_s3 = s4.format(addr='北京',phone=122,email='dk@ld.com',password='12344',username='wangxin')
print(new_s3)#insert into user value (wangxin,12344,北京,dk@ld.com,122);
d = {'addr':'北京','username':'xiaoliang','password':'1233','email':'dkj@lf.com',
'phone':'sdjk'}
s_map=s4.format_map(d)#可以传一个字典,insert into user value (xiaoliang,1233,北京,dkj@lf.com,sdjk);
print(s_map)
s.zfill(3)#在前面补0的
l = [1,2,3,4,5,6,7,8,9,10,11,12]
for i in l:
# res = '0'+str(i)
res = str(i).zfill(2)
print(res)
s6 = 'user1,user2,user3,user4,user5,user7'
#按照某个字符来分割字符串,什么都不传按照空格分隔['user1,user2,user3,user4,user5,user7']
print(s6.split(','))#['user1', 'user2', 'user3', 'user4', 'user5', 'user7']
ls = ['nw','d','fdl']
res = ','.join(ls)#以某个字符串把listl里面的元素连起来 把list变成字符串
print(res)#'nw,d,fdl'
print(str(ls))#'['nw', 'd', 'fdl']'
# # list 列表、数组
#
stus =['qqq','www','eee','rrr','ttt','yyy',111,555,333,'ttt']
# 下标、索引、角标
print(stus[2])
# 定义空list
l = []
l = list()
# 关于list的增删改查
# 增加元素
stus.append('iii')#在list末尾增加一个元素
stus.insert(2,'ccc')#在指定位置增加元素 ['qqq', 'www', 'ccc', 'eee', 'rrr', 'ttt', 'yyy', 111, 555, 333, 'iii']
stus.insert(12,'ccc')#如果指定的下标不存在,那么就在末尾增加['qqq', 'www', 'ccc', 'eee', 'rrr', 'ttt', 'yyy', 111, 555, 333, 'iii', 'ccc']
print('stus的长度是',len(stus))#元素个数 stus的长度是 12
print(stus)
# 改
stus[7]='vvv'
print('改完之后的:',stus)#改完之后的: ['qqq', 'www', 'ccc', 'eee', 'rrr', 'ttt', 'yyy', 'vvv', 555, 333, 'iii', 'ccc']
print(stus[-1])#ccc 下标-1代表最后一个元素
#删除
stus.pop()#不指定下标就默认删除最后一个元素
print(stus)
stus.remove('qqq')#必须传值,删除指定元素
# pop传一个不存在的下标:报错,下标越界 IndexError:pop index out of range
#remove传一个不存在的元素:报错,元素不在列表中 ValueError:list.remove(x):x not in list
del stus[-1]#删除指定下标的元素
stus.clear()#清空list
# 查
print(stus[1])
res = stus.count('www')#查询某个元素在list里出现的次数
print(res)
res2 = stus.count(999)#查询不存在的元素 返回0
print(res2)
print(stus.index('eee'))#找某一个元素的下标
# 如果list里面有多个元素返回第几个下标:返回元素第一次出现的下标
# 如果元素不存在,返回的下标是多少:ValueError: 'xxx' is not in list
stus.reverse()#反转
print(stus)#['ttt', 333, 555, 111, 'yyy', 'ttt', 'rrr', 'eee', 'www', 'qqq']
stus.sort()#排序,英文按首字母排序,list里有多种数据类型排序会报错TypeError: '<' not supported between instances of 'int' and 'str'
print(stus)
li= [5,3,1,4,7,12]
li.sort()#[1, 3, 4, 5, 7, 12]
li.sort(reverse=True)#[12, 7, 5, 4, 3, 1]
print(li)
li.extend(stus)#把blist放在alist里
print(li)#[12, 7, 5, 4, 3, 1, 'qqq', 'www', 'eee', 'rrr', 'ttt', 'yyy', 111, 555, 333, 'ttt']
#布尔类型
# True False
print(1>2)#False
if stus.count('aaa')>0:
pass
if 'aaa' in stus:
print('存在')
else:
print('不存在')
list循环
stus = ['小黑','小磊','小白','小额','效果','小数','小屋','小艾']
for s in stus:
print('s的值是%s'%s)#推荐这种循环方式
# 如果直接循环一个list,那么每次取的就是list里面的每一个元素
# for i in range(len(stus)):
# print(stus[i]) 不需要循环下标的方式,可以同时取下标和值
#用while循环就循环下标了
index = 0
while index < len(stus):
print(stus[index])
index+=1
import xpinyin
p = xpinyin.Pinyin()
for s in stus:
stu_pinyin = p.get_pinyin(s,'')
print(stu_pinyin)
#同时取值和下标enumerate
for index,stu in enumerate(stus,1):#不指定就是从0开始,也可以指定从几开始
print(index,stu)
#enumerate实际应用场景
chioce = ['注册','登陆','退出','购物']
print('输入编号进入对应操作')
for index,c in enumerate(chioce,1):
print('%s==>%s'%(index,c))
stu = [1,2,3,['a','b','c',['哈','哈','哈']]]#三维数组
#改
stu[3][3][0]='哈哈'
print(stu)
#加
stu[3][3].insert(0,'呵呵呵')
print(stu)#[1, 2, 3, ['a', 'b', 'c', ['呵呵呵', '哈哈', '哈', '哈']]]
stu[3][3][1]='熟练'
print(stu)#[1, 2, 3, ['a', 'b', 'c', ['呵呵呵', '熟练', '哈', '哈']]]
#切片:list取值的一种方式 可以指定范围取值
# !!顾头不顾尾
stu2 = [1,2,3,4,5,5,67,7,8,9,0]
print(stu2[2:5])#[3, 4, 5]
print(stu2[:5])#如果最前面的下标没有写,代表从最前面开始取 即从0开始取
print(stu2[4:])#如果后面的下标没有写,代表取到最后面
new_stu = stu2[:]#复制了一个新的list
new_stu2 = stu2 #和上一个复制方式有区别
print(stu2[0:11:2])#[1, 3, 5, 67, 8, 0] 步长
print(stu2[0:11:-1])#[]
#如果步长是负数的时候,那么从右往左取值
print(stu2[::-1])#[0, 9, 8, 7, 67, 5, 5, 4, 3, 2, 1]
print(stu2[-1:-10:-2])#[0, 8, 67, 5, 3]
#下标 索引 切片同样适用于字符串 字符串也可以循环
name = '牛奶sdjlajfl'
print(name[0])#结果:牛
print(name[0:3])#牛奶s
print(len(name))
for i,n in enumerate(name):
print(i,n)
# 0 牛
# 1 奶
# 2 s
# 3 d
# 4 j
# 5 l
# 6 a
# 7 j
# 8 f
# 9 l
name[0]='d'
print(name)#TypeError: 'str' object does not support item assignment
元组
tuple元组也是一个list 但是它的值不能改变
# 可以用下标取值 也可以循环
t = (1,2,3)
# t.index()
# t.count()
# 实际应用
mysql_info = (
'118.1.1.1',
'root',
3306,
'123456'
)
print(mysql_info[0])#可以取值
mysql_info[0]='1.1.1.1' #会报错
# ()小括号可以提高优先级
#定义一个元组只有一个元素时 只写这一个元素不能定义成一个元组
# 需要在元素后加一个逗号,这样就定义了一个元组了
orcle_info = (123)
orcle_info1 = (123,) #元组
print(type(orcle_info)) #int类型
#定义字典
#字典是无序的
stu_info = {}
stu_info = dict()
#k-value
#字典里的key是唯一的
stu_info2 = {"name":"wangxin","age":18,"addr":"北京",
}
#查
print(stu_info2['name'])#wangxin
print(stu_info2['age'])#18
print(stu_info2.get('name'))
#两种取值方式的区别:如果key存在时无区别,不存在时前者报错,后者返回空
#取key不存在时会怎么样:前者会报错,后者返回None
# print(stu_info2['dkls'])#KeyError: 'dkls'
print(stu_info2.get('dkls'))#返回为空 None
print(stu_info2.get('dkls',500))#返回500,如果没有值,则返回默认值
# res = list(range(10000000))#list越大 查找越慢
#json是字符串,需要把json转换成字典
#改
stu_info2['addr']='上海'
print(stu_info2)#{'name': 'wangxin', 'age': 18, 'addr': '上海'}
#增
stu_info2['phone']=12335364
#此种方式是,key存在就查询,不存在就新增
print(stu_info2)#{'name': 'wangxin', 'age': 18, 'addr': '上海', 'phone': 12335364}
stu_info2.setdefault('email','sdjlf@122.com')#{'name': 'wangxin', 'age': 18, 'addr': '上海', 'phone': 12335364, 'email': 'sdjlf@122.com'}
print(stu_info2)
#用setdefault新增一个已经存在的值:不会修改原来key的value 也不会新增
stu_info2.setdefault('name','房间')
print(stu_info2)
#删
# stu_info2.pop('email')
# del stu_info2['email']
print(stu_info2)
# stu_info2.clear()#清空字典
# stu_info2.popitem()#从字典里随机删除一个元素
#使用del和pop删除一个不存在的key:都会报错 KeyError:'email'
# del stu_info2['email']
# print(stu_info2)
# stu_info2.pop('email')
# print(stu_info2)
d1 = {'w':'c'}
d2 = {'a':'b'}
#把d2放进d1里
d1.update(d2)#{'w': 'c', 'a': 'b'}
print(d1)
print(d1.keys())#dict_keys(['w', 'a']) 获取字典里所有的key
print(d1.values())#dict_values(['c', 'b'])获取字典所有的value
t = type(d1.keys())
print('t=',t)#t= <class 'dict_keys'>
#循环
for k,v in d1.items():#效率不高的原因是会把字典转成二维数组再循环取值
print(k,v)
print('d1===',d1.items())#二维数组 d1=== dict_items([('w', 'c'), ('a', 'b')])
#直接循环字典,每次循环的是字典的key
for k in d1:
print(k)
for k in d1:
print(k,d1.get(k))#这种循环取值更快
print('d1===',d1.items())#二维数组 d1=== dict_items([('w', 'c'), ('a', 'b')])
#判断key是否存在
#py2中如此判断
# d1.has_key('')
#py3:两种方式都可,但第一种直接判断,效率更快,第二种需要先找到所有key再判断
print('name' in d1)#不存在False 存在True
print('name' in d1.keys())#不存在False 存在True
stu = {
'xiaoming':{"passwd":12424,"phone":243235,"age":19,"addr":'北京'},
'xiaohei':{"passwd":9999,"phone":44444,"age":22,"addr":'上海'}
}
print(stu['xiaoming']['phone'])
d = {
'wangxin':{
"car":{'bmw':3,'ben-z':2,'五菱荣光':3},
"house":["上海","北京","南京"],
"money":100000
},
'xxx':{
"bag":['xx','lv'],
"house":['sanhuan','wuhuan'],
"hzp":['skii','ysl'],
"language":{
'英语':4,
'p':10,
'riyu':8,
}
}
}
# d['wangxin']['car'].append('劳斯莱斯')
print(d)
d['wangxin']['house'].pop(-1)
d['wangxin']['house'].remove('上海')
print(d)
d['wangxin']['money']+=50000
print(d)
d['xxx']['language']['p']=5
print(d)
for k in d['xxx']['language']:
print(k)
print(d['xxx']['language'].keys())
print(d['wangxin']['car'].values())
sum_car = 0
for n in d['wangxin']['car'].values():
sum_car+=n
print(sum_car)
# print(sum(sum_car))
# !!!set 集合,天生去重
# 集合和字典都是{},但集合是单个元素,字典是k-v
# 定义 一个空集合 set()
#无序
#可以循环
l = [1,2,2,3,4,5,4,3,2]
lset = set(l)#list转一下set
print(lset)#结果:{1, 2, 3, 4, 5}
lset.add(6)#增加一个元素
lset.pop()#随机删除一个元素
# lset.remove(1)#删除指定元素
for s in lset:
print(s)
# 可以做些关系测试
# 举例:在a也在b中,用list就需要循环,用set就方便多了
# 交集(用的多一点)
stud1={'aa','bb','cc','dd'}
stud2={'bb','ee','aa','gg'}
res = stud1.intersection(stud2)
print(res)#结果:{'aa', 'bb'}
res2 = stud1&stud2 #一样取交集,如果没有交集返回为空
#并集:把两个集合合并在一起,然后去重
res3 =stud1.union(stud2)
res4=stud1|stud2
print(res3,res4)#{'bb', 'aa', 'dd', 'ee', 'cc', 'gg'} 返回集合是无序的
#差集:在前面一个集合有 在后面集合没有就是差集
res5 = stud1-stud2
res6=stud1.difference(stud2)
print(res5,res6)#{'cc', 'dd'}
#对称差集:只在一个集合里面出现过的
res7 = stud1.symmetric_difference(stud2)
res8 = stud1^stud2
print(res7,res8)#{'ee', 'dd', 'gg', 'cc'}
import string
print(string.ascii_letters)#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_lowercase)#abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase)#ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits)#0123456789
print(string.punctuation)#!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
import random
print(random.randint(1,9))
s = [1,2,3,4]
print(random.choice(s))#随机选择一个元素
import string
print(string.ascii_letters)#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_lowercase)#abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase)#ABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.digits)#0123456789
print(string.punctuation)#!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
import random
print(random.randint(1,9))#指定范围取整数
s = [1,2,3,4]
print(random.choice(s))#随机选择一个元素
print(random.sample(s,3))#指定随机取多个元素
print(random.shuffle(s))#只能传入list,打乱顺序,没有返回值,只负责打乱
print(s)#None [4, 3, 2, 1]
print(random.uniform(1,19))#指定范围随机取小数 2.6511836241983016
f = random.uniform(1,19)
print(round(f,3))#指定保留几位小数 14.541
1585

被折叠的 条评论
为什么被折叠?



