zoukankan      html  css  js  c++  java
  • Python全栈-第七课 学习笔记

    Python第七课 学习笔记

    基础数据类型的补充

    • str

    • s1 = 'jarvis'
      #capitalize 首字母大写,其余变小写
      print(s1.capitalize())
      #swapcase   大小写翻转
      print(s1.swapcase())
      #title		每个单词的首字母大写
      msg= 'jarvis one'
      print(msg.title())
      
      s1 = 'jarvis'
      #center(总长度、宽度,填充物)		居中
      print(s1.center(20))
      print(s1.center(20,'*'))
      
      #find :通过元素找索引,找到第一个就返回,找不到 返回-1
      #index:通过元素找索引,找到第一个就返回,找不到 报错
      print(s1.find('a'))
      print(s1.find('r'))
      print(s1.find('o'))
      print(s1.index('o'))
      
    • 元组(tuple)

    • #元组中如果只有一个元素,并且没有逗号,那么它不是元组,它与所改元素的数据类型一致。
      tu1 = (2,3,4)
      tu1 = (2)
      tu1 = ('太白')
      tu1 = ([1,2,3])
      tu1 = (1,)
      print(tu1,type(tu1))
      
      tu = (1,2,3,3,3,2,2,3,)
      #count 		计数
      print(tu.count(3))
      tu = ('one', 'two', 'one')
      #index 		通过元素去找索引
      print(tu.index('one'))
      
    • 列表

    • l1 = ['one', 'two', 'three', 'four']
      #count pass
      #index		通过元素去找索引
      print(l1.index('four'))
      #sort  		排序,数字排序才是有意义的
      l1 = [5, 4, 3, 7, 8, 6, 1, 9]
      l1.sort()  				#默认从小到大排序
      l1.sort(reverse=True)  	#从大到小排序
      l1.reverse()  			#反转
      print(l1)
      
      #列表可以相加追加在后面	列表不去重
      l1 = [1, 2, 3]
      l2 = [1, 2, 3, 'one', 'two', 'three']
      print(l1 + l2)
      
      #列表与数字相乘复制三次
      l1 = [1, 'two', 3]
      l2 = l1*3
      print(l2)
      
      l1 = [11, 22, 33, 44, 55]
      #索引为奇数对应的元素删除(不能一个一个删除,此l1只是举个例子,里面的元素不定)。
      
      #正常思路:
      #先将所有的索引整出来。
      #加以判断,index % 2 == 1: pop(index)
      for index in range(len(l1)):
      	if index % 2 == 1:
      		l1.pop(index)
      print(l1)
      
      #列表的特性:(顺沿)
      l1 = [11, 22, 33, 44, 55]
      #最简单的:
      del l1[1::2]
      print(l1)
      
      l1 = [11, 22, 33, 44, 55]
      #倒序法删除元素
      for index in range(len(l1)-1,-1,-1):
      	if index % 2 == 1:
      		l1.pop(index)
      print(l1)
      
      #思维置换
      l1 = [11, 22, 33, 44, 55]
      new_l1 = []
      for index in range(len(l1)):
      	if index % 2 ==0:
      		new_l1.append(l1[index])
      print(new_l1)
      l1 = new_l1
      print(l1)
      # 循环一个列表的时,最好不要改变列表的大小,这样会影响你的最终的结果。
      
    • 字典

    • #字典的补充
      #update			增加键值对  修改  元组拆包后添加键值对
      dic = {'name': 'jarvis', 'age': 18}
      dic.update(hobby='运动', hight='175')
      dic.update(name='one')
      dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])  # 面试会考
      print(dic)
      #update			其他用法更新
      dic1 = {"name":"jarvis","age":18,"sex":"man"}
      dic2 = {"name":"alex","weight":175}
      dic1.update(dic2)  		#更新,有则覆盖,无则添加
      print(dic1) 	# {'name': 'jarvis', 'age': 18, 'sex': 'man', 'weight': 175}
      print(dic2)
      
      #fromkeys		来自键,这个键来自于一个可迭代对象,值共用一个
      dic = dict.fromkeys('abc', 100)
      dic = dict.fromkeys([1, 2, 3], 'jarvis')
      #坑:值共用一个,面试题
      dic = dict.fromkeys([1,2,3],[])
      dic[1].append(666)
      print(dic)
      
      dic = {'k1': 'one', 'k2': 'two', 'k3': 'three', 'age': 18}
      #将字典中键含有'k'元素的键值对删除。
      #错误方法
      for key in dic:
      	if 'k' in key:
      		dic.pop(key)
      print(dic)
      
      #循环一个字典时,如果改变这个字典的大小,就会报错。
      dic = {'k1': 'one', 'k2': 'two', 'k3': 'three', 'age': 18}
      l1 = []
      for key in dic:
      	if 'k' in key:
      		l1.append(key)
      print(l1)
      for i in l1:
      	dic.pop(i)
      print(dic)
      
      for key in list(dic.keys()):  #强制转化成列表['k1', 'k2', 'k3','age']
      	if 'k' in key:
      		dic.pop(key)
      print(dic)
      
    • 数据类型的转换

    • # 0,''(),[],{},set(),None  转换成bool值为False
      

    编码的进阶

    • 编码的进阶

      • 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 亚洲文字:一个字符三个字节表示。
    • 不同的密码本之间能否互相识别?不能。

    • 数据在内存中全部是以Unicode编码的,但是当你的数据用于网络传输或者存储到硬盘中,必须是以非Unicode编码(utf-8,gbk等等)。

    • 英文

      • str: 'hello '
        • 内存中的编码方式: Unicode
        • 表现形式: 'hello'
      • bytes:
        • 内存中的编码方式: 非Unicode
        • 表现形式:b'hello'
    • 中文

      • str:‘中国’
        • 内存中的编码方式: Unicode
        • ​ 表现形式:'中国'
      • bytes:
        • 内存中的编码方式: 非Unicode # Utf-8
        • 表现形式:b'xe4xb8xadxe5x9bxbd'
    • #.encode('编码本类型')编码   
      #str ---> bytes
      s1 = '中国'
      b1 = s1.encode('utf-8')  	#编码
      print(b1,type(b1))  		#b'xe4xb8xadxe5x9bxbd'
      b1 = s1.encode('gbk')  		#b'xd6xd0xb9xfa' <class 'bytes'>
      
      #.decode('解码本类型')解码
      #bytes---->str
      b1 = b'xe4xb8xadxe5x9bxbd'
      s2 = b1.decode('utf-8')  	#解码
      print(s2)
      
    • #先将gbk编码本解码为Unicode,再用utf-8编码
      #gbk ---> utf-8
      b1 = b'xd6xd0xb9xfa'
      s = b1.decode('gbk')
      # print(s)
      b2 = s.encode('utf-8')
      print(b2)  					#b'xe4xb8xadxe5x9bxbd'
      
  • 相关阅读:
    5分钟带你了解Kafka的技术架构
    聊聊我的知识体系
    你分得清楚Maven的聚合和继承吗?
    为抖音而生的多闪,如何获取抖音的用户数据?
    消息中间件系列第3讲:使用消息队列需要考虑的几个问题
    消息中间件系列第2讲:如何进行消息队列选型?
    消息中间件系列第1讲:为什么要用消息队列?
    JVM规范系列开篇:为什么要读JVM规范?
    安全编码实践之三:身份验证和会话管理防御
    安全编码实践之二:跨站脚本攻击防御
  • 原文地址:https://www.cnblogs.com/rgz-blog/p/12694959.html
Copyright © 2011-2022 走看看