python 字符串和散列类型

04字符串和散列类型

字符串

  1. 修改
#字符串本身不能修改
a = '  This is my str.  '
#replace() 匹配所有并替换
a.replace('i', 'b')
#upper() 全部大写
a.upper()
#lower() 全部小写
a.lower()
#swapcase() 大小写转换
a.swapcase()
#capitalize() 对首个单词的首字母大写
a.capitalize()
#title() 所有单词首字母大写
a.title()
#strip() 去除字符串左右两边的空格
a.strip()
#lstrip() 去除字符串左边的空格
a.lstrip()
#rstrip() 去除字符串右边的空格
a.rstrip()
  1. 切割
#split() 默认以空格作为分隔符
a = '  This is my str.  '
a.split()
#指定分隔字符
a.split('i')
#指定切割次数
a.split('i', 1)
  1. 查找
#index() 查找对应元素索引位置,默认返回第一个,找不到会报错
a = 'This is my str.'
a.index('h')
#添加索引值,表示从哪个位置开始往后找'i'
a.index('i', 4)
#find() 查找对应元素索引位置,默认返回第一个
a.find('i')
#找不到元素则返回-1
a.find('W')
  1. 其他方法
#isalpha() 判断全是中文或字母
'abD'.isalpha()
#isdigit() 判断全是数字
'123'.isdigit()
#islower() 判断全是小写
'abc'.islower()
#isupper() 判断全是大写
'ABC'.isupper()
  1. 转义
#转义符可以来表示不方便打印的字符串,同时r可以去掉转义,在表示路径的时候会更加的方便
#\n 换行符
print('abc\ndef')
#\t 水平制表符
print('abc\tdef')
#\\ 转义反斜杠
print('abc\\def')
#r 统一取消转义,表示路径时使用
print(r'abc\tdef')
  1. 编码
#encode() 编码 默认utf-8编码
a = '你好'.encode(encoding='gbk')
print(a)
#decode() 解码 默认utf-8解码
b = a.decode(encoding='gbk')
print(b)
#编码与解码形式需一致,否则解码失败,出现乱码

序列类型(列表,元组,字符串)
散列类型(字典,集合,没有顺序)

字典

  1. 定义
dic1 = {} #空字典
dic2 = {'x':1, 'y':2, 'z':3} #常规定义方式
dic3 = dict{a=1, b=2, c=3} #使用dict函数定义字典
  1. 增删改查
dic = {'x':1, 'y':2, 'z':3, 'key':123}
#查
dic['key'] #通过键名取值,不存在则报错
dic.get('key') #根据键名取值,不存在返回空
dic.get('a','没有这个键') #有则返回value,无则返回自定义的内容
#增
#setdefault(key,value) 添加键值对,无则增,有则查
dic.setdefault('xyz', 321)
#改
dic['a'] = 123 #修改键值对,无则增,有则改
dic.update({'a':200, 'b':400}) #无则增,有则改
#删
dic.pop('b') #删除指定的key
dic.popitem() #删除键值对,3.6版本后根据添加的顺序进行删除,后添加先删除,之前版本随机删除
dic.clear() #清空字典
  1. 其他方法
dic.keys() #得到字典所有的键
dic.values() #得到字典所有的值
dic.items() #得到字典所有的键值对

集合

集合的值具有唯一性,会自动去重,无序
空集合 set( )

  1. 运算
set1 = {1,2,3}
set2 = {'a','b','c'}
#交集&  两个集合中相同的元素
set1 & set2
#并集| 两个集合的元素合并
set1 | set2
#差集-  前面的集合减去后面的集合
set1 - set2
  1. 增删改
set1 = {1,2,3}
#增
set1.add(4) #添加一个值
set1.update({1,2,345,'1'}) #批量添加(由于集合自动去重,相当于更新)
#删
set1.pop() #随机删除,若数据有顺序,则按一定顺序删除
set1.remove(345) #指定删除
#集合没有修改操作
  1. 判断
set1 = {1,2,3}
set2 = {'a','b','c'}
set3 = {1,2,3,4}
#isdisjoint() 判断两个集合是否有交集
set1.isdisjoint(set2) #没有交集返回True,有交集返回False
#issubset() 判断前面的集合是否被包含于后面的集合
set1.issubset(set3) #被包含返回True,否则返回False
#issuperset() 判断前面的集合是否包含后面的集合
set3.issuperset(set1) #包含返回True,否则返回False
#isinstance() 判断数值类型
isinstance(5,(int,float)) #判断是否是整型或浮点型中的一种,是返回True,否则返回False

练习

  1. 找出两个列表中相同元素,并打印出来
li = [5,7,8,9,10,5,6,7]
li2 = [9,8,5,3,2,1]
#第一种
a = set()
li3 = set(li) & set(li2)
li3 = list(li3)
print(li3)
#第二种
li4 = []
for i in li:
	if i in li2:
		li4.append(i)
print(li4)
  1. 统计一串字符中,每个字母 a~z的出现频数,忽略大小写
s = 'hsadBhkzsakAHDAsjLfasdaz'
s = s.lower()
dic = {}
for i in s:
	counts = s.count(i)
	dic.update({i:counts})
print(dic)
  1. 利用26个字母和10个数字,随机生成10个8位密码
str1 = [str(i) for i in range(0,10)]
str2 = ['%c'%i for i in range(97,97+26)]
str3 = ''.join(str1+str2)
import random
li = []
for i in range(10):
	li.append(''.join(random.choices(str3, k = 8)))
print(li)
  1. 判断用户输入的是不是一个手机号码(是数字、11位)
str1 = input('请输入一个正确的手机号码')
if str1.isdigit() and len(str1) == 11:
	print('这是一个手机号码')
else:
	print('这不是一个手机号码')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值