05.基础数据类型补充,数据类型之间转换,编码的转换

基础数据类型的补充

str

"""
str:方法
    s1.capitalize():将s1首字母大写,其余小写
    s1.swapcase():将s1大小写翻转
    s1.title():将每个单词首字母大写
    s1.center(20, '*'):长度20,将s1居中,其余位置用*填充
    s1.find('h'):返回s1字符串中第一个h的下标,若找不到,返回-1
    s1.index('h'):返回s1字符串中第一个h的下标,若找不到,报错
"""
s1 = 'hello word!'
print(s1.capitalize())      # Hello word!
print(s1.swapcase())        # HELLO WORD!
print(s1.title())           # Hello Word!
print(s1.center(20, '*'))   # ****hello word!*****
print(s1.find('h'))         # 0
print(s1.index('h'))        # 0

tuple

"""
tuple
    元组中如果只有一个元素,并且没有逗号,他与该元素数据类型一致.
    tu.count(3):计算tu中3出现的个数
    tu.index(1):返回tu中,数据1出现的第一个位置的索引
    
"""
tu = (1, 2, 3, 4, 3, 3, 3, 3)
# 计算tu中3出现的个数
print(tu.count(3))
# 根据数据找索引
print(tu.index(1))

list

"""
list
    循环列表时,尽量不要改变列表的大小,这样会影响最终的结果
    l1.count('王五'):找出王五在l1中出现的次数
    l1.index('李四'):找到李四在l1中首次出现的索引
    l2.sort():默认将l2从小到大排序
    l2.sort(reverse=True):设置从大到小排序
    l2.reverse():将l2里面的数据翻转
    print(l1 + l2):列表相加,将l1和l2的数据组合在一起
    print(l2 * 3):列表相乘
"""
l1 = ['张三', '李四', '王五', '王五']
# 找出王五在l1中出现的次数
print(l1.count('王五'))
# 找到李四在l1中首次出现的索引
print(l1.index('李四'))

l2 = [1, 3, 2, 8, 4, 6, 7]
# sort:排序
# 默认从小到的排序
l2.sort()
print(l2)
# 设置从大到小排序
l2.sort(reverse=True)
print(l2)
# 将列表里面的数据翻转
l2.reverse()
print(l2)
# 列表相加
print(l1 + l2)
# 列表相乘
print(l2 * 3)

dict

"""
dict
    循环一个字典时,如果改变这个字典的大小,就会报错
    # 增加:update
    dic1.update(hobby='吃饭', hight='180')
    dic1.update([(1,'a'),(2,'b')])
    dic1.update(dic2)       # 将dic2添加到dic1.相同的字段覆盖,不同的字段添加
    # fromkeys:值共用一个,任意一个值发生改变,其余的都跟着变
    dic = dict.fromkeys('abc', 100)   # {'a': 100, 'b': 100, 'c': 100}

"""
dic1 = {'name': 'LLD', 'age': '男'}
dic2 = {'name': 'lld', 'weight': 75}
# 增加:update
dic1.update(hobby='吃饭', hight='180')
dic1.update([(1,'a'),(2,'b')])
dic1.update(dic2)       # 将dic2添加到dic1.相同的字段覆盖,不同的字段添加
print(dic1)
# fromkeys:值共用一个,任意一个值发生改变,其余的都跟着变
dic = dict.fromkeys('abc', 100)   # {'a': 100, 'b': 100, 'c': 100}
print(dic)

数据类型之间的转换

int bool str之间的转换

# int ---> bool
i = 100
print(bool(i))  # True  # 非零即True
i1 = 0
print(bool(i1))  # False 零即False

# bool ---> int
t = True
print(int(t))  # 1  True --> 1
t = False
print(int(t))  # 0  False --> 0

# int ---> str
i1 = 100
print(str(i1))  # '100'

# str ---> int  # 全部由数字组成的字符串才可以转化成数字
s1 = '90'
print(int(s1))  # 90

# str ---> bool
s1 = '太白'
s2 = ''
print(bool(s1))  # True 非空即True
print(bool(s2))  # False
# bool ---> str
t1 = True
print(str(True))  # 'True'

str list两者转换

# str ---> list
s1 = 'alex 太白 武大'
print(s1.split())  # ['alex', '太白', '武大']

# list ---> str  # 前提 list 里面所有的元素必须是字符串类型才可以
l1 = ['alex', '太白', '武大']
print(' '.join(l1))  # 'alex 太白 武大'

list set两者之间的转化

# list ---> set
s1 = [1, 2, 3]
print(set(s1))

# set ---> list
set1 = {1, 2, 3, 3,}
print(list(set1))  # [1, 2, 3]

str bytes之间的转换

# str ---> bytes
s1 = '太白'
print(s1.encode('utf-8'))  # b'\xe5\xa4\xaa\xe7\x99\xbd'

# bytes ---> str
b = b'\xe5\xa4\xaa\xe7\x99\xbd'
print(b.decode('utf-8'))  # '太白'

所有数据类型均可转换为bool

转化成bool值为False的数据类型有:
‘’, 0, (), {}, [], set(), None

基本数据类型的分类

按照存储空间的占用比分类

  • 数字
  • 字符串
  • 集合:无序,即无序存索引相关信息
  • 元组:有序,需要存索引相关信息,不可变
  • 列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
  • 字典:有序,需要存key与value映射的相关信息,可变,需要处理数据的增删改(3.6之后有序)

按照存值个数分类

image-20210617135411207

按照可变不可变分类

image-20210617135447768

按照访问顺序区分

image-20210617135518468

编码的进阶

ASCII码:包含英文字母,数字,特殊字符与01010101对应关系。

a 01000001 一个字符一个字节表示。

GBK:只包含本国文字(以及英文字母,数字,特殊字符)与0101010对应关系。

a 01000001 ascii码中的字符:一个字符一个字节表示。

中 01001001 01000010 中文:一个字符两个字节表示。

Unicode包含全世界所有的文字与二进制0101001的对应关系。

a 01000001 01000010 01000011 00000001

b 01000001 01000010 01100011 00000001

中 01001001 01000010 01100011 00000001

UTF-8:包含全世界所有的文字与二进制0101001的对应关系(最少用8位一个字节表示一个字符)。

a 01000001 ascii码中的字符:一个字符一个字节表示。

To 01000001 01000010 (欧洲文字:葡萄牙,西班牙等)一个字符两个字节表示。

中 01001001 01000010 01100011 亚洲文字;一个字符三个字节表示。

  1. 不同的编码方式能否互相识别? 不能

  2. 数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者硬盘中,必须使用非Unicode编码(utf-8居多,也有使用GBK的)

image-20210617140228310

image-20210617141802803

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值