1 小数据池(节省内存)

  只有数字和字符串中内存,储存在同一个内存地址中

  数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了

2 编码

  ASCii 中    英文用 8 位 ,一个字节

  unicode 中    英文用 32 位 ,四个字节  中文用 32 位 ,四个字节

  utf-8 中    英文用 8 位 ,一个字节  中文用 24 位 ,三个字节

  gbk 中    英文用 8 位 ,一个字节  中文用 16 位 ,二个字节

  特点:  各个编码之间的二进制,是不能互相识别,会产生乱码

       文件的储存和传输,不能使用unicode(太大了),而使用utf-8、utf-16、gbk2312和ascii等

  在python3中,str在内存中是用unicode编码的

  bytes 类型:

    对于英文str

      表现形式: s = 'eli'

      编码方式:unicode

    对于英文bytes

      表现形式: s = b'eli'

      编码方式:utf-8 或 gbk

    

    对于中文str

      表现形式: s = '中国'

      编码方式:unicode

    对于中文bytes

      表现形式: s = b'x\e34\e34\e23\e23\e23\12'  (有6个字节,故转成了utf-8的形式)

      编码方式:utf-8 或 gbk

   用encode 编码,将str 转化成 bytes 类型   

s1 = 'eli'
s1 = s1.encode('utf-8') #b'eli'

2 关于字典和列表的小知识

#删除偶数位的数
# 1 切片
lis = [11, 22, 33, 44, 55, 66]
lis = lis[::2]print(lis)
# 2 先取一个新列表,然后替换下即可
l1 = []
for i in lis:
if lis.index(i) % 2 == 0 :
l1.append(i)
lis = l1
print(lis) dic = dict.fromkeys([1,2,3],'春哥')print(dic)
dic = dict.fromkeys([1,2,3],[])
print(dic) # {1: [], 2: [], 3: []}
dic[2].append('袁姐') #因为没有序号,所以添加, 就所有都添加的
print(dic)
dic[2].extend('二哥')  #迭代式添加print(dic)
# 重要的一点,在循环列表和字典的时候,不能删除其元素,如果删除就会报错

  0、[]、{}、()、'' 和 set() 转化成bool值 都是False

3 元组

 如果是单个元素在元组之中,以没有逗号,原本什么样的数据类型,就是什么样的 

tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))

4 集合

  是可变的数据类型,其中的元素是不可变的数据类型,无序且不重复(可以用于去重)

#创建
set1 = set({1,3,'barry'})
set2 = {1,2 ,'barry'}
print(set1)
print(set2) #增
set1 = {'tom', 'eli', 'sofile', 'jay'}
set1.add('ALEX')
set1.update('shuai') #迭代增加
print(set1) # 删
set1 = {'tom', 'eli', 'sofile', 'jay'}
set1.remove('jay') #按元素删除,没有报错
set1.pop() #随机删除
set1.clear() #清除集合
del set1 #删除集合
#print(set1) # 交集(& intersection)
set1 = {1, 2, 3, 4, }
set2 = {3, 4, 5, 6, }
print(set1 & set2)
print(set1.intersection(set2)) # 并集 (\ union)
print(set1 | set2) # {1, 2, 3, 4, 5, 6}
print(set2.union(set1)) # {1, 2, 3, 4, 5, 6} # 差集 (- difference)
print(set1 - set2) # {1, 2,}
print(set1.difference(set2)) # {1, 2} # 反交集(^ symmetric_difference)
print(set1 ^ set2) # {1, 2, 6, 7}
print(set1.symmetric_difference(set2)) # {1, 2, 6, 7} # 子集和超集
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。 # frozenset 把集合变成不变类型
s = frozenset('barry')
print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

5 深浅Copy

  赋值的过程,只是将一个的内存地址 赋给另外一个,只是指向同一个内存地址,若改变其值,并不会使另一个改变,因为其的内存地址并为改变

a = 1
b = a
print(a, b )
b = 2
print(a, b)

  对于列表来说,赋值这行为比作,使两个东西同时指向同一个杯子, 而水是共享的,当你改变杯子里面的水,两个值都会发生变化 

  当你使用copy 方法时,把这个杯子给copy下来,有同样的内存地址,当你改变其中的项时,改变的其时是那个项所指的内存地址,另一个杯子,并没有改变,相互独立

al = [1,1,1,[22,33]]
bl = al.copy()
print(al,bl )
al[2] = 99
print(al,bl)
print(id(al[2]),id(bl[2]))

  然而出现嵌套的情况,就是杯子中还有小杯子,小杯子里的水,是共享的,所以一个改变,另一个也跟着变化(浅copy)

  深copy 就是要 import copy

  然后再进行copy ,,这样就是所有都复制

Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy的更多相关文章

  1. 基础数据类型的坑和集合及深浅copy

    一.基础数据类型的坑: 元组: 如果一个元组中,只有一个元素,且没有逗号,则该"元组"与里面的数据的类型相同. # 只有一个数据,且没有逗号的情况: print(tu1,type( ...

  2. Python学习【第十篇】基础之杂货铺

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 百分号方式: ...

  3. python学习之路入门篇

    本文是up学习python过程中遇到的一些问题及总结归纳,本小节是入门篇. python基本语法 循环.分支不多赘述. 模块:一个.py文件就是一个模块. 文件和异常 模式 含义解释 “r” 读模式 ...

  4. python学习之路(2)---字符编码

    二进制编码 bin(300)    python计算二进制编码,十进制转2进制 一个二进制位就是1bit 1bit代表了8个字节,00001111 1bit  = 1bytes   缩写1b 1kb ...

  5. Python学习之路【目录】

    本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! 目录: Python学习[第一篇]python简介 Python学习[第二篇]p ...

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  8. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  9. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

随机推荐

  1. .net实现网易云音乐下载

    客户端版的网易云音乐下载是需要vip的,网页版的虽然可以通过调试工具找到下载链接,但是用起来不是很方便,通过调试工具观察请求发现请求参数都是加密的,比如搜索歌曲的请求参数: 这个加密的实现肯定是写在j ...

  2. Spring-----入门

    Spring 入门 一.首先导入核心jar包 commons-logging-1.1.3.jar                 日志        spring-beans-4.2.4.RELEAS ...

  3. spring mvc将对象转换为json返回的配置

    之前在spring 3中用的好好的MappingJacksonHttpMessageConverter转换器,将对象转为json响应给浏览器,在spring4中,报错. Cannot create i ...

  4. mybatis源码解析之Configuration加载(四)

    概述 上一篇文章,我们主要讲了datasource的相关内容,那么<environments>标签下的内容就看的差不多了,今天就来看一下在拿到transationManager和datas ...

  5. php短信验证码接口接入流程及代码示例

    对于绝大部分企业来说,所使用的短信验证码接口都是第三方短信服务商所提供,目前市场上短信服务商有很多,在此向大家推荐一家动力思维乐信,运营13年,值得信赖! 就拿动力思维乐信短信验证码接口为例,详细介绍 ...

  6. 增强for、iterator迭代器

    因为初学java,对部分语法还模棱两可, 在做练习的时候,用增强for遍历字符串编译报错 所以来复习下增强for原理和适用范围 一.增强for概念 增强for(也成为for each循环)是JDK 1 ...

  7. 浅析HashMap的实现原理

    本文参照https://www.cnblogs.com/chengxiao/p/6059914.html#commentform作者的文章,并分享一些自己的体会. 本文将主要回答以下两个问题: 1. ...

  8. BluePrism初尝2

    在接近三周的自学中,初步体验到了RPA的甜头. 在对BP这个工具慢慢的深入接触中,从0 到1的探索式学习,从最开始的一个个的小功能模块的用途,每一个的属性的功能,到现在自己能初步尝试组织一些简单的流程 ...

  9. django之CSRF

    在POST请求到达views之前,csrf帮我们进行一层验证 <!DOCTYPE html> <html lang="en"> <head> & ...

  10. javascript进阶高手必备知识

    不想当将军的士兵不是好士兵,想当将军那就意味着要学习更多的技能,进阶前端高手必备知识点都有哪些? 你知道作用域.原型.继承.作用域链.闭包等概念吗? 从浏览器多进程到JavaScript单进程你又理解 ...