python基础之数据类型补充(基础五),,第七章 python
python基础之数据类型补充(基础五),,第七章 python
第七章 python基础之数据类型补充(基础五)
7.1 数据类型补充
字符串str,整型int,列表list,元组tuple,字典dict。
7.1.1 字符串str类型补充
s1 = str(123) #类型字符串
s.capitalize() 首字母大写
s = "alex wusir"s1 = s.capitalize() #首字母大写:Alex wusirprint(s1)
s.title() 每个单词首字母大写
s = "alex wusir"s1 = s.title() #每个单词前面首写字母大写:Alex Wusirprint(s1)
s.count() 统计出现的次数
s = "alex awusair"print(s.count("a")) #3次
s.find() 字符串的查找
s = "alex taibai"print(s.find("e")) #dind 查找出对应的索引值print(s.find("c")) # find 查找不到的时候返回 -1print(s.index("C")) # index 查找不到就报错
查找所有a的索引(下标):
s = "alex taibai"for i in range(len(s)): #range范围是s字符串的长度 if s[i] == 'a': print(i)
7.1.2列表list类型补充:
li = list("815678234") # 定义的方式print(li)['8', '1', '5', '6', '7', '8', '2', '3', '4']
count() 统计
li = list("815678234")print(li.count("1")) #统计1出现1次
index() 查看
print(li.index("4")) #查看"4"的索引值为8print(li)
li.reverse() 反正
li.reverse() #['4', '3', '2', '8', '7', '6', '5', '1', '8']print(li)
li.sort() 排序
li.sort() # 升序:['1', '2', '3', '4', '5', '6', '7', '8', '8']li.sort(reverse=True) # 降序:['8', '8', '7', '6', '5', '4', '3', '2', '1']print(li)
7.1.3元组tuplel类型的补充
tu = tuple("12345")print(tu)('1', '2', '3', '4', '5')
count() 统计
tu = ('1', '2', '3', '4', '5')print(tu.count("3")) #统计"3"出现的次数
index() 查找
print(tu.index("4")) #4对应的索引值为33
7.1.4 字典dict类型的补充
dic = dict(k=1,k1=123,k2="aa",k3=222,k4=1123123) # 定义方式print(dic){'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222, 'k4': 1123123}
dic.popitem() # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
dic = {'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222, 'k4': 1123123}dic2 = dic.popitem() #随机删除返回删除内容('k4', 1123123)print(dic)('k4', 1123123){'k': 1, 'k1': 123, 'k2': 'aa', 'k3': 222}
python3.6版本 默认删除最后个键值对
dict.fromkeys() 批量创建字典
dic = {}dic1 = dict.fromkeys("abcdef",[4,5,6]) # 第一个参数可迭代对象# 第二个参数是每个键对应的值 -- 用的都是同一个内存地址print(dic1){'a': [4, 5, 6], 'b': [4, 5, 6], 'c': [4, 5, 6], 'd': [4, 5, 6], 'e': [4, 5, 6], 'f': [4, 5, 6]}dic1["a"].remove(5)print(dic1){'a': [4, 6], 'b': [4, 6], 'c': [4, 6], 'd': [4, 6], 'e': [4, 6], 'f': [4, 6]}
7.1.5 集合set补充类型
s = set("1234") # 定义方式print(s){'2', '1', '3', '4'}
7.2 数据类型的转换
字符串str===>整数int 字符串中必须是十进制的数,才能进行转换。
s = "abc"n = int(s)print(n,type(n))#报错 n = int(s) ValueError: invalid literal for int() with base 10: 'abc'
s = "123" #必须是十进制的数n = int(s)print(n,type(n))123 <class 'int'>
整数int===>字符串str
n = 123s = str(n)print(s,type(s))
字符串str==>列表list
s = "123"li = list(s)print(li)['1', '2', '3']
s = "123"print(s.split()) #把字符串转化成列表:['123']print(''.join(li)) # 把列表转换成字符串:123
列表list==>字符串str
li = ["12","3"]s = str(li) #把列转成字符串['12', '3'] <class 'str'>print(s,type(s))print(s)print(''.join(li)) #用join把列转换成字符串 不能有数字,变成123123
列表list==>元组tuple
li = [1,2,3]tu = tuple(li)print(tu)
元组tuple==>列表list
tu = (1,2,3)li = list(tu)print(li)
集合set==>列表list
s = {12,3,4}print(list(s))
列表list==>集合set
li = [1,2,3]s = set(li)print(s)
数据类型转换的总结:
字符串 -- 数字:字符串中必须都是十进制的数字
数字 -- 字符串:直接转换
列表 -- 字符串:‘‘.join() -- 可迭代的对象中不能出现数字
字符串 -- 列表:split
除字典外,容器数据类型之间可以直接相互转换
数据类型有序无序的总结:
有序: str,int,bool,list,tuple无序: dict,set可变: list,dict,set不可变: str,int,bool,tuple
数据类型的访问方式:
直接访问: int,bool,set
顺序访问: list,tuple,str
通过键访问: dict
7.2 常见的问题
7.2.1 对列表li里面索引值是奇数的删除
li = [1,2,3,4,5] #对应的索引值:0,1,2,3,4
试题:
li = [1,2,3,4,5] #[1,3,4,5]
索引值是奇数的删除
for i in range(4):
if i % 2 == 1:
li.pop(i) # 结果不对
print(li) #结果[1,3,4] for循环执行到最后一个索引3时会
对列表里索引值是奇数的删除方法:
1.1倒序删除
li = [1,2,3,4,5]for i in range(len(li)-1,-1,-1): if i % 2 == 1: li.pop(i) # 倒序删除print(li)
1.2 偷换概念删除
偷换感念li = [1,2,3,4,5]new_li = []#要删的值for i in range(len(li)): if i % 2 == 1: new_li.append(li[i]) #通过索引值取到元素for em in new_li: li.remove(em) #拿到计数的索引值要删除的值print(li)
###方法li = [1,2,3,4,5]for i in range(len(li)-1,-1,-1): if i % 2 == 1: del li[i] # 倒序删除print(li)###方法li = [1,2,3,4,5]del li[1::2]print(li)使用for删除列表的时候从左向右删除,会报错.结果不对
dic = {"k1":"v1","k2":"v2"}
for i in dic:
dic["k3"] = "v3"
print(dic)
面试题:
li = [1,2,3,4]
for i in li:
li.append(i)
print(li)
字典常见的错误:
不能在遍历字典本身中改变大小,要批量删除字典的键值对。
题目:循环字典dic中添加一对键值:"k3":v3
dic = {"k1":"v1","k2":"v2","k3":"v3"}for i in dic: dic["k7"] = "1"print(dic) #报错:RuntimeError: dictionary changed size during iteration
通过循环取值添加到新的列表内进行删除。
dic = {"k1":"v1","k2":"v2","k3":"v3"}li = []for i in dic: if i == "k1" or i == "k3": li.append(i)for em in li: dic.pop(em)print(dic)
7.3编码进阶
ascii 不支持中文
gbk 国标 中文2 英文1
unicode 万国码 英文2 中文4
utf-8 英文1 欧洲2 亚洲3
7.3.1 解码,编码
中文转成字节,先编码,解码后编码
s = "今天晚上,吃鸡!"s1 = s.encode("gbk") # 中文转换成字节 -- 编码s1 = s.encode("utf-8") # 中文转换成字节 -- 编码b'\xbd\xf1\xcc\xec\xcd\xed\xc9\xcf,\xb3\xd4\xbc\xa6!'print(s1.decode("utf-8")) #字节转换成字符串 -- 解码
s = "你好"s1 = s.encode("utf-8") # 字节print(s1) # 6个字节print(s1.decode("gbk")) # 3个字
python3内存使用的就是unicode
python2内存使用的就是ascii
python基础之数据类型补充(基础五)
相关内容
- pythonp爬虫 爬取百度音乐,,#coding=ut
- python3 在文件确实存在的情况下,运行提示找不到文件
- python爬虫 ----文章爬虫(合理处理字符串中的\n\t\r....
- python反反爬,爬取猫眼评分,,python反反爬,
- python基础知识 05 python语言中的大整数,,第五课 python
- Python 字典 len()方法,,描述Python 字
- Python(64)_写函数,判断用户传入的值(字符串,列表,
- python学习-10 运算符1,,1.加+,减-,乘*
- [原创]win7/64位系统+python3.7.2下安装wordcloud库失败之解决
- python 将IP地址转换成打包后的32位格式,,python 2.7
评论关闭