1、str(字符串)

  1、切片

str = "你好,我是Python"

s = str[0:4]    #用法[start:end:step],指定开始下标和结束下标,step是步长,默认是1,可以不指定
#包括开头的下标,但是不包括结尾的下标,所以结果是:你好,我

  2、字符串相关方法

str = "ok,你好,我是Python,我包括123456789,还包括abcdefghijklmnopQRstuvwxyz"

str.capitalize()    #首字母大写,其他都小写
str.upper() #字母全部转大写
str.lower() #全部字母转小写
str.swapcase() #大小写转换
str.title() #被字符隔开的首字母大写
str.center(90,"*") #将str居中,字符串拉长到90,其他字符补*
str.strip() #去左右两端空格
str.lstrip() #去左边的空格
str.rstrip() #去右边的空格
str.strip("abc") #去左右两端的abc
str.replace("","哈哈") #替换字符串,还可以指定替换的个数用法:replace("","",2)
str.split(",") #以逗号分割字符串

  3、字符串查找的方法

str = "ok,你好,我是Python,我包括123456789,还包括abcdefghijklmnopQRstuvwxyz"

str.startswith("o")    #查询是否以o开头,返回True或False
str.endswith("z") #查询是否以z结尾,返回True或False
str.count("o") #查询o出现的次数
str.find("n") #查询n第一次出现的位置,没有返回-1
str.find("n",8,12) #切片查询n第一次出现的位置,没有返回-1
str.index("n") #查询n的索引位置,和find用法结果相同,但是找不到会报错

  4、字符串条件判断

str = "ok,你好,我是Python,我包括123456789,还包括abcdefghijklmnopQRstuvwxyz"

str.isalnum()    #是否有字母和数字组成,只要含字母就为True
str.isalpha() #是否有字母组成,只要含字母就为True
str.isdigit() #是否有数字构成,不含小数点 len(str) #计算字符串的长度

2、字符串的编码以及常量池

  1、is和==的区别

s = 'alex'
print(id(s)) #
s1 = "alex"
print(id(s1)) #
print(s == s1) #True lst = [1, 2, 4]
print(id(lst)) #
lst1 = [1, 2, 4]
print(id(lst1)) #
print(lst == lst1) #True #首先id是比较内存地址,==比较的是值
#其次str和int都是在常量池中,所以他的内存地址都相同,但是list不在常量池中,所以他的内存地址不相同

  2、编码

1. ASCII : 最早的编码. ⾥里里⾯面有英⽂文⼤大写字⺟母, ⼩小写字⺟母, 数字, ⼀一些特殊字符. 没有中⽂文,
8个01代码, 8个bit, 1个byte
2. GBK: 中⽂文国标码, ⾥里里⾯面包含了了ASCII编码和中⽂文常⽤用编码. 16个bit, 2个byte
3. UNICODE: 万国码, ⾥里里⾯面包含了了全世界所有国家⽂文字的编码. 32个bit, 4个byte, 包含了了
ASCII
4. UTF-8: 可变⻓长度的万国码. 是unicode的⼀一种实现. 最⼩小字符占8位

    2.1、字符串串在传输时转化成bytes=> encode(字符集)来完成

s = "alex"
print(s.encode("utf-8")) # 将字符串串编码成UTF-8
print(s.encode("GBK")) # 将字符串串编码成GBK
结果:
b'alex'
b'alex' s = "中"
print(s.encode("UTF-8")) # 中⽂文编码成UTF-8
print(s.encode("GBK")) # 中⽂文编码成GBK
结果:
b'\xe4\xb8\xad'
b'\xd6\xd0' #英文编码之后的结果和源字符串一致. 中文编码之后的结果根据编码的不同.

    2.2、那么在对方接收的时候. 也是接收的bytes类型的数据. 我们可以使用decode()来进行解码操作. 把bytes类型的数据还原回我们熟悉的字符串:

s = bs.decode("GBK") # 解码
# 然后需要进⾏行行重新编码成UTF-8
bss = s.encode("UTF-8") # 重新编码

3、深拷贝和浅拷贝

  1、浅拷贝

lst1 = ["何炅", "杜海涛","周渝民"]
lst2 = lst1.copy()
lst1.append("李嘉诚")
print(lst1)
print(lst2)
print(id(lst1), id(lst2))
结果:
两个lst完全不一样. 内存地址和内容也不一样. 发现实现了内存的拷贝 lst1 = ["何炅", "杜海涛","周渝民", ["麻花藤", "马芸", "周笔畅"]]
lst2 = lst1.copy()
lst1[3].append("无敌是多磨寂寞")
print(lst1)
print(lst2)
print(id(lst1[3]), id(lst2[3]))
结果:
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]
4417248328 4417248328 #经过上面的方法,我们可以看出,浅拷贝只能拷贝最外一层的,如果拷贝深层的,就是直接指定内存地址了,不再是拷贝内容了

  2、深拷贝

import copy
lst1 = ["何炅", "杜海涛","周渝民", ["麻花藤", "马芸", "周笔畅"]]
lst2 = copy.deepcopy(lst1)
lst1[3].append("无敌是多磨寂寞")
print(lst1)
print(lst2)
print(id(lst1[3]), id(lst2[3]))
结果:
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅', '无敌是多磨寂寞']]
['何炅', '杜海涛', '周渝民', ['麻花藤', '马芸', '周笔畅']]
4447221448 4447233800 #都不一样了. 深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生一个改变另一个跟着改变的问题

最新文章

  1. [Erlang 0104] 当Erlang遇到Solr
  2. empty isset
  3. php 操作mysql 分表的一种方法
  4. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]
  5. Java Hour 38 Weather ( 11 ) – fastjson
  6. Echart - 地图散点图(服务网点图)的实现
  7. 【Unity Shaders】学习笔记——SurfaceShader(一)认识结构
  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.6. 安装Oracle所依赖的必要包
  9. Linux新手必看:浅谈如何学习linux
  10. A simple test
  11. 调用微信退款接口时,证书验证出现System.Security.Cryptography.CryptographicException: 出现了内部错误 解决办法
  12. React.js再探(二)
  13. Java——代码块
  14. 报表嵌入到.net系统页面
  15. Intellij Idea生成serialVersionUID的方法
  16. Spring boot创建定时任务
  17. vue通过(NGINX)部署在子目录或者二级目录实践
  18. c#二维码建立与识别
  19. CUDA Samples: Calculate Histogram(atomicAdd)
  20. office2013安装/激活

热门文章

  1. H5实现横向滚动的方法总结
  2. JS函数基础
  3. 【LG3582】[POI2015]KIN
  4. 记录一次JVM配置优化的案例
  5. UE4的联网系统研究
  6. 第10组 Alpha冲刺(3/4)
  7. 小程序支持原生async方法
  8. [Beta阶段]测试报告
  9. mysql 后台运行命令
  10. (转)react 项目构建