Python学习之路2(编码、数据类型、字典、其它)

本文介绍了Python的基础知识,包括格式化输出的三种方式,如%s、f-string和.format();算术、比较和赋值运算符的用法;编码问题,特别是Python3的UTF-8编码和小数据池机制;还涵盖了数据类型的特性,如字符串的切片和转换函数,以及列表和元组的操作。同时,文章提及了字典的特性,强调字典中的键必须是可哈希的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.格式化输出
1、%s是数字占位符,%d是数字占位符。
简单举例:name = “不二%s” % (“郭”)
输出name = 不二郭

2、f “{ content }”
简单举例:name = “不二郭”
print(f"我叫{name}")
输出:我叫不二郭
3、.format()
简单举例:s12 = “我叫{}, 今年{}岁了, 我喜欢{}”.format(“周杰伦”, 28, “周润发”)

二.运算符
2.1 算术运算符总体来说和数学中学到的运算符一样,但是个别不一样,下面进行叙述。
1、%--------取余 简单举例:5%2 结果为1
2、--------幂运算 简单举例:23 结果为8
3、//---------取整除 简单举例:5%2 结果为2

2.2 比较运算
1、 == -------判断比较对象是否相等,返回False 或 True
2、!= --------不等于,判断比较对象是否不相等, 返回False 或 True
3、<> ----------不等于,同2

2.3 赋值运算
1、= ----简单的赋值运算符
2、+=—加法赋值运算符 b+=a 等效于 b = b+a
3、其它算术运算符用2的方式表示,类似于2,这里不再阐释

2.4 逻辑运算符
1、and、or、not 优先级: () > not > and > or

三.编码问题
python3对内容进行编码的默认为utf-8。UTF-8: 每个字符最少占8位. 每个字符占用的字节数不定.根据文字内容进行具体编码. 比如. 英文. 就一个字节就够了. 汉字占3个字节. 这时即满足了中文. 也满足了节约. 也是目前使用频率最高的一种编码。

        python3中: 内存中使⽤用的是unicode码
		UTF-16: 每个字符最少占16位. 
		GBK: 每个字符占2个字节, 16位


		8bit = 1byte 
		1024byte = 1KB 
		1024KB = 1MB 
		1024MB = 1GB 
		1024GB = 1TB 
		1024TB = 1PB 
		1024TB = 1EB 
		1024EB = 1ZB 
		1024ZB = 1YB 
		1024YB = 1NB 
		1024NB = 1DB

小数据池
1、id()
id()— 通过id()我们可以查看到一个变量表示的值在内存中的地址
2、 is和==
后者判断左右两端的值是否相等. 是不是一致. is 判断左右两端内容的内存地址是否一致. 如果返回True, 那可以确定这两个变 量使用的是同一个对象, 我们可以这样认为. 如果内存地址相同. 那么值一定是相等的. 如果值相等. 则不一定是同一 个对象

小数据池. 一种数据缓存机制. 也被称为驻留机制. 各大编程语言中都有类似的东西. 在网上搜索常量池,小数据池指的都是同一个内容. 小数据池只针对: 整数, 字符串, 布尔值. 其他的数据类型不存在驻留机制

**概述:**在python中对-5到256之间的整数会被驻留在内存中. 将一定规则的字符串缓存. 在使用的时候, 内存中只会创建一个该数据的对 象. 保存在小数据池中. 当使用的时候直接从小数据池中获取对象的内存引用. 而不需要创建一个新的数据. 这样会节省更更多的内存区域.

优点: 能够提高一些字符串, 整数的处理速度. 省略创建对象的过程.
缺点: 在’池’中创建或者插入新的内容会花费更多的时间.

对于数字: -5~256是会被加到小数据池中的. 每次使用都是同一个对象.
对于字符串: 1. 如果字符串的长度是0或者1, 都会默认进行缓存
2. 字符串长度大于1, 但是字符串中只包含字母, 数字, 下划线时才会缓存
3. 用乘法得到的字符串. ①. 乘数为1, 仅包含数字, 字母, 下划线时会被缓存. 如果包含其他字符, 而长度<=1 也会被驻存, ②. 乘数大于1 . 仅包含数字, 字母, 下划线这个时候会被缓存. 但字符串长度不能大于20
4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.

四. 数据类型重点
1、bit_length(). 计算整数在内存中占用的二进制码的长度
2、数据类型之间的转换可以用内置函数强转
3、字符串的切片和索引
4、切记, 字符串是不可变的对象, 所以任何操作对原字符串是不会有任何影响的
字符串的相关函数(都需要新的变量接收,因为原字符串不会改变)
capitalize()----第一个字母大写
lower()----全部转换为小写
upper()----全部转换为大写
casefold()----转换成小写, 和lower的区别: lower()对某些字符支持不够好. casefold()对所有字母都有效. 比如东欧的⼀一些字母
title----每个被特殊字符隔开的字母首字母大写
center(10, "")----拉长成10, 把原字符串放中间.其余位置补
expandtabs()----可以改变\t的长度, 默认长度更改为8
strip()----去空格
replace(“旧”,“新”)----字符串的替换
split(“用什么切割”)----字符串的切割
startwith()----是否以什么开头 返回布尔值
endwith()----是否以什么结尾 返回布尔值
count(“a”)----查找a的次数
find()----查找括号内内容的索引位置 找不到返回-1
index()----同上,找不到报错
条件判断函数
isalnum()—是否由字母和数字组成
isalpha()—是否由字母组成
isdigit()—是否由数字组成
isdecimal—是否由数字组成
isnumeric—是否由数字组成 可以判断中文
len()—计算字符串长度

五. 迭代
语法:
for 变量in 可迭代对象:

             可迭代对象:可以一个一个往外取值的对象

六. 列表重点(注意:列表和字符串不一样,列表是可以改变的,每次操作都是在原列表上进行操作)
1、索引和切片----与字符串类似
2、增删改查

             **增**
             append---添加到列表最后    
             
             **删**
              pop, remove, clear, del 
              pop(2)默认删除最后一个,括号里可以的数字表示删除几号元素
              remove(“指定元素”)删除指定元素
              clear()清空整个列表
              del list[1:3] 切片删除

             **改**
             主要是索引切片修改
             lst[1] = "不二郭"

            **查**
            迭代循环查找
           
          **其它操作**
          lst = ["科比", "詹姆斯", "不二郭", "乔治", "伦纳", "德"]
          c = lst.count("科比")     # 查询科比出现的次数 
          print(c)
          lst = [1, 11, 22, 2]
          lst.sort()          #        排序. 默认升序
          print(lst) 
          lst.sort(reverse=True)  # 降序
          print(lst)
         lst = ["科比", "詹姆斯", "不二郭", "乔治", "伦纳", "德"]
         print(lst) 
         lst.reverse()  列表反转
         print(lst) 
         l = len(lst)    # 列表的长度 
         print(l)

3、不可变列表—元组
元组操作基本和列表一样,元组不能更改,不可变。这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象.
元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组
例如:tu = (1,)
元组的其它方法和列表一样,可以自己试用

七. 小知识点
range
range可以帮我们获取到一组数据. 通过for循环能够获取到这些数据.
for num in range(10):
print(num)
for num in range(1, 10, 2):
print(num)
for num in range(10, 1, -2): # 反着来, 和切片一样
print(num)

重点—字典
一、字典的简单介绍
字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key’必须是可hash的, 如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的, 那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址而规定的.
已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set。
dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作. 它只能通过key来获取dict中的数据 。

二. 字典的增删改查和其他相关操作

       **1、增加**
                   dic = {} 
                   dic['name'] = '周润发'     # 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict 
                   dic['age'] = 18 
                   print(dic) 
                   
                   # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
                    dic.setdefault('周伯通')   # 也可以往里面设置值. 
                    dic.setdefault("李嘉诚", "房地产")    # 如果dict中已经存在了了. 那么setdefault将不会起作用  
                    print(dic)

     **2、删除**
		        	dic = {}
					ret = dic.pop("jay")
					print(ret)
					del dic["jay"]
					print(dic) # 随机删除.
					ret = dic.popitem() # 清空字典中的所有内容
					dic.clear()
     
      **3、修改**
		          	dic = {"id": 123, "name": 'sylar', "age": 18}
					dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
					dic.update(dic1)    # 把dic1中的内容更更新到dic中. 如果key重名. 则修改替换. 如果不不存 在key, 则新增.
					print(dic)
					print(dic1)

     **4、查询**
     				查询一般使用key来查找具体的数据
     				
     				dic = {"id": 123, "name": 'sylar', "age": 18}
					print(dic['name'])                #sylay
					print(dic.get("ok"))              #none
					print(dic.get("sylar"))           # None
					print(dic.get("sylar", "niu"))    # niu
	
	**5、其他操作**
				dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"}
				print(dic.keys())   # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行
				for key in dic.keys():
				    print(key)
				print(dic.values())# dict_values([123, 'sylar', 18, '科比']) 一样. # 也当 list来用
				for value in dic.values():
				    print(value)
				print(dic.items())  # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 这个东西也是list. 只不过list中装的是tuple
				for key, value in dic.items():  # ?? 这个是解构
				    print(key, value)
				
	**# 解构**
				a, b = 1, 2
				print(a, b)
				(c, d) = 3, 4
				print(c, d)
				e, f = [1, 2, 3]    # 解构的时候注意数量量必须匹配
				print(e, f)   #报错

**字典的嵌套:很简单,按之前学的就可以操作**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值