目录
- 进制
- 基本数据类型
- str 字符串
- int 整数
- bool 布尔值
- list 列表
- tuple 元组
- dict 字典
- set 集合
- range and enumrate
一 . 进制
0 1010010100101001
1位
01010010 100101001
1字节
01010010 01010010 +
unicode
UTF-8: 自己对应关系
李 01010010 01010010 01010010
GBK: 自己对应关系
李 11010010 01110011
====》
二进制:0 1 10 11 100 101
八进制:0 1 2 3 4 5 6 7 10
十进制:0 1 2 3 4 5 6 7 8 9 10 .. 15
十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 10
总结:
1. 硬盘上保存数据: 01010101010101010101
2. 读取:01010101010101010101 -> 对应的编码的汉字 --> xx
3. 看到:
- 转换完成的字符串
- 以十六进制展示的01010101
二 . 基本数据类型
- str 字符串
字符串的功能有很多,下面让我们列举我们经常用到的这些功能:
name = 'alex' # str类的对象 # 1. capitalize 字符串首字母大写,自身不变,会生成一个新的值 v = name.capitalize() # 自动找到name关联的str类,执行其中的capitalize技能 print(name) print(v) # 2. 将所有大写变小写,casefold 更强大支持多国语言 优先于lower name = 'AleX' v = name.casefold() print(name) print(v) # 3. 将所有大小变小写 只支持英文 name = 'AleX' v = name.lower() print(v) # 4. 文本居中 # 参数1: 表示总长度 # 参数2:空白处填充的字符(长度为1) name = 'str 字符串' v = name.center(50,'*') print(v) # 结果: ########### str 字符串 ############# # 5. 表示传入之在字符串中出现的次数 # 参数1: 要查找的值(子序列) # 参数2: 起始位置(索引) # 参数3: 结束位置(索引) name = "alexasdfdsafsdfasdfaaaaaaaa" v = name.count('a') print(v) v = name.count('df') print(v) v = name.count('df',12) print(v) v = name.count('df',0,15) print(v) # 6. 是否以xx结尾 name = 'alex' v1 = name.endswith('ex') print(v1) # 7. 是否以xx开头 name = 'alex' v2 = name.startswith('al') print(v2) # 8. encode **** 转换成字节 **** name = "李杰" v1 = name.encode(encoding='utf-8') # 3个字节 表示一个汉字 print(v1) # 输出十六进制 v2 = name.encode(encoding='gbk') # 2个字节 表示一个汉字 print(v2) # 9. 找到制表符\t,进行替换(包含前面的值) # PS: \n name = "al\te\tx\nalex\tuu\tkkk" v = name.expandtabs(20) #20个空格 print(v) # 10. 找到指定子序列的索引位置:不存在返回-1 name = 'alex' v = name.find('o') print(v) v = name.index('o') # index 不存在则会报错,所以我在写代码是尽量优先使用find print(v) # 11.字符串格式化 tpl = "我是:%s;年龄:%s;性别:%s"%('李杰',18,'不清楚') tp2 = "我是:{0};年龄:{1};性别:{2}" # 传入索引对应值 v = tpl.format("李杰",19,'都行') print(v) tp3 = "我是:{name};年龄:{age};性别:{gender}" # 传入k对应值 v = tpl.format(name='李杰',age=19,gender='随意') print(v) tp4 = "我是:{name};年龄:{age};性别:{gender}" # 传入整个字典 v = tpl.format_map({'name':"李杰",'age':19,'gender':'中'}) print(v) # 12. 是否是数字、汉字 name = 'alex8汉字' v = name.isalnum() # 字,数字 print(v) # True v2 = name.isalpha() print(v2) # False # 13. 判断是否是数字 num = '②' v1 = num.isdecimal() # '123' v2 = num.isdigit() # '123','②' v3 = num.isnumeric() # '123','二','②' print(v1,v2,v3) # 14. 是否是表示符 n = 'name' v = n.isidentifier() print(v) # 15.是否全部是小写 name = "ALEX" v = name.islower() print(v) v = name.isupper() # 是否大写 print(v) # 16.全部变大写 name = 'alex' v = name.upper() # 对应全变小写 lower() print(v) # 17.是否包含隐含的符号 name = "钓鱼要钓刀鱼,\n刀鱼要到岛上钓" v = name.isprintable() print(v) # 18.是否全部是空格 name = ' ' v = name.isspace() print(v) # 19.元素拼接(元素字符串) name = 'alex' v = "_".join(name) # 内部循环每个元素 print(v) name_list = ['海峰','杠娘','李杰','李泉'] v = "搞".join(name_list) print(v) # 20. 左右填充 # center,rjust,ljust name = 'alex' v = name.rjust(20,'*') print(v) # 21. 对应关系 + 翻译 m = str.maketrans('aeiou','12345') # 对应关系a-1 ,e-2... name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf" v = name.translate(m) print(v) # 22. 分割,保留分割的元素 content = "李泉SB刘康SB刘一" v = content.partition('SB') print(v) # 输出:('李泉', 'SB', '刘康SB刘一') # 23. 替换 content = "李泉SB刘康SB刘浩SB刘一" v = content.replace('SB','Love') print(v) v = content.replace('SB','Love',1) print(v) # 24,移除空白,\n,\t,自定义 name = 'alex\t' v = name.strip() # 空白,\n,\t print(v) # 25. 大小写转换 name = "Alex" v = name.swapcase() print(v) # 26. 填充0 默认从左开始 name = "alex" v = name.zfill(20) print(v)
# 字符串功能总结:
name = 'alex'
name.upper()
name.lower()
name.split()
name.find()
name.strip()
name.startswith() # 以XX开头
name.format() # 格式化
name.replace()
"alex".join(["aa",'bb'])
# 额外功能:
name = "alex"
name[0] 索引取值
name[0:3] 范围取值
name[0:3:2] 步长取值
len(name) 测长度
for循环,每个元素是字符
2. int 整型
# 1. 当前整数的二进制表示,最少位数
age = 4 # 100
print(age.bit_length())
# 2. 获取当前数据的字节表示
age = 15
v = age.to_bytes(10,byteorder='big')
print(v)
# 输出:b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f'
v = age.to_bytes(10,byteorder='little')
print(v)
# 输出:b'\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00'
3. bool 布尔值
v = 0 # 1,-1
bool(0) --> False
v = ""
bool("") --> False
v = []
bool([]) --> False
v = 1 / -1
bool(-1) --> True
# 总结:0 and 空内容:False
4. list 列表
# 1.追加 user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型 user_list.append('刘铭') print(user_list) # 2. 清空 user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型 user_list.clear() print(user_list) # 3. 拷贝(浅拷贝) user_list = ['李泉','刘一','刘康','豆豆','小龙'] # 可变类型 v = user_list.copy() print(v) print(user_list) # 4. 计数 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 v = user_list.count('李泉') print(v) # 5. 扩展原列表 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 user_list.extend(['郭少龙','郭少霞']) print(user_list) # 6. 查找元素索引,没有报错 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 v = user_list.index('李海') print(v) # 7. 删除并且获取元素 - 索引 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 v = user_list.pop(1) print(v) print(user_list) # 8. 删除 - 值 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 user_list.remove('刘一') print(user_list) # 9. 翻转 user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙'] # 可变类型 user_list.reverse() print(user_list) # 10. 排序: 欠参数 nums = [11,22,3,3,9,88] # 排序,从小到大 nums.sort() print(nums) # 从大到小 nums.sort(reverse=True) print(nums)
##### 额外功能:
# user_list = ['李泉','刘一','李泉','刘康','豆豆','小龙']
# user_list[0]
# user_list[1:5:2]
# del user_list[3]
# for i in user_list:
# print(i)
# user_list[1] = '姜日天'
# user_list = ['李泉','刘一','李泉','刘康','豆豆',['日天','日地','泰迪'],'小龙'] # 可以嵌套[] 、{}
5.tuple 元组
user_tuple = ('alex','eric','seven','alex')
# 1. 获取个数
v = user_tuple.count('alex')
print(v)
# 2.获取值的第一个索引位置
v = user_tuple.index('alex')
print(v)
####### 额外功能:
# user_tuple = ('alex','eric','seven','alex')
# for i in user_tuple:
# print(i)
# v = user_tuple[0]
# v = user_tuple[0:2]
# print(v)
# user_tuple = ('alex','eric','seven',['陈涛','刘浩','赵芬芬'],'alex')
# user_tuple[0] = 123 x
# user_tuple[3] = [11,22,33] x
# user_tuple[3][1] = '刘一'
# print(user_tuple)
# li = ['陈涛','刘浩',('alex','eric','seven'),'赵芬芬']
# ****** 元组最后,加逗号 ****** 五星重点
# li = ('alex',)
# print(li)
6. dict 字典
# 1. 清空、 dic = {'k1':'v1','k2':'v2'} dic.clear() print(dic) # 2. 浅拷贝 dic = {'k1':'v1','k2':'v2'} v = dic.copy() print(v) # 3. 根据key获取指定的value;不存在不报错 dic = {'k1':'v1','k2':'v2'} v = dic.get('k1111',1111) print(v) v = dic['k1111'] print(v) # 4. 删除并获取对应的value值 dic = {'k1':'v1','k2':'v2'} v = dic.pop('k1') print(dic) print(v) # 5. 随机删除键值对,并获取到删除的键值 dic = {'k1':'v1','k2':'v2'} v = dic.popitem() print(dic) print(v) k,v = dic.popitem() # ('k2', 'v2') print(dic) print(k,v) v = dic.popitem() # ('k2', 'v2') print(dic) print(v[0],v[1]) # 6. 增加,如果存在则不做操作 dic = {'k1':'v1','k2':'v2'} dic.setdefault('k3','v3') print(dic) dic.setdefault('k1','1111111') print(dic) # 7. 批量增加或修改 dic = {'k1':'v1','k2':'v2'} dic.update({'k3':'v3','k1':'v24'}) print(dic) dic = dict.fromkeys(['k1','k2','k3'],123) print(dic) dic = dict.fromkeys(['k1','k2','k3'],123) dic['k1'] = 'asdfjasldkf' print(dic) dic = dict.fromkeys(['k1','k2','k3'],[1,]) { k1: 123123213, # [1,2] k2: 123123213, # [1,] k3: 123123213, # [1,] } dic['k1'].append(222) print(dic)
# ########## 额外功能:
# - 字典可以嵌套
# - 字典key: 必须是不可变类型
# dic = {
# 'k1': 'v1',
# 'k2': [1,2,3,],
# (1,2): 'lllll',
# 1: 'fffffffff',
# 111: 'asdf',
# }
# print(dic)
# key:
# - 不可变
# - True,1
# dic = {'k1':'v1'}
# del dic['k1']
7. set集合
s1 = {"alex",'eric','tony','李泉','李泉11'} s2 = {"alex",'eric','tony','刘一'} # 1.s1中存在,s2中不存在 v = s1.difference(s2) print(v) # #### s1中存在,s2中不存在,然后对s1清空,然后在重新复制 s1.difference_update(s2) print(s1) # 2.s2中存在,s1中不存在 v = s2.difference(s1) print(v) # 3.s2中存在,s1中不存在 # s1中存在,s2中不存在 v = s1.symmetric_difference(s2) print(v) # 4. 交集 v = s1.intersection(s2) print(v) # 5. 并集 v = s1.union(s2) print(v) # 6. 移除 s1 = {"alex",'eric','tony','李泉','李泉11'} s1.discard('alex') print(s1) s1 = {"alex",'eric','tony','李泉','李泉11'} s1.update({'alex','123123','fff'}) print(s1)
# ##### 额外功能:
# s1 = {"alex",'eric','tony','李泉','李泉11'}
# for i in s1:
# print(i)
# s1 = {"alex",'eric','tony','李泉','李泉11',(11,22,33)}
# for i in s1:
# print(i)
三 . range and enumrate
# 1. 请输出1-10
range(1,11) # 生成 1,23,,4,56.10
# 不会立即生成,只有循环迭代时,才一个一个生成
for i in range(1,11): #
print(i)
for i in range(1,11,2): #
print(i)
for i in range(10,0,-1): #
print(i)
# 1. 不会立生成,迭代之后才一个一个创建;
"""
- 2.7:
range()
xrange() 不会立即生成,迭代之后才一个一个创建;
- 3.x
range() 不会立即生成,迭代之后才一个一个创建;
"""
# 2. range: 三个参数
li = ['eric','alex','tony']
# range,len,li循环
for i in range(0,len(li)):
ele = li[i]
print(ele)
li = ['eric','alex','tony']
for i in li:
print(i)
for i in range(0,len(li)):
print(i+1,li[i])
# enumerate额外生成一列有序的数字
li = ['eric','alex','tony']
for i,ele in enumerate(li,1):
print(i,ele)
v = input('请输入商品序号:')
v = int(v)
item = li[v-1] # 索引是从零开始的 所以-1
print(item)