切片,元组,字典字,符串

字符串的介绍

1. 字符串在内存的存储

2. 字符串的加法

3. 字符串的格式化

下标索引

1. 下标就是编号,超市中的存储柜的编号。通过编号就能找到存储柜

. 下标的使用

a. 第一个是0,依次类推。最后一个是n-1

b. name="abcdefg" name[0] name[len(name)-1] name[-1]

切片:

对操作对象截取一部分的操作,字符串、列表、元组都支持切片

切片的语法:[start,end,step] 左闭右开型 [0:] 全部 [0:-1] 包头不包尾

面试题: 反转字符串 

字符串函数中的常用操作:

查找字符串:

都是默认从左边找,右边找r----

1. find(str,star=0,end=) -1 没找到 返回找到第一个的第一个字符的下标为 rfind()

2. index() 找不到报错 rindex()

3. count 统计某个字符串出现的次数

4. replace("","",次数) 替换

5. split(" ",2) 三个片段 不保留分隔符

6. partition() 保留分隔符

7. capitalize 首字母大写

8. title 每个单词的首字母大写

9. startwith

10. endwith

11. lower

12. upper 验证码不区分大小写

13. ljust rjust center 左右对齐 居住 ljust("100")

14. lstrip rstrip strip 去除空格

15. isalpha isdecimal isdigit isalnum

16. join 列表转化为字符串

 

tuple

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

所以,只有1个元素的tuple定义时必须加一个逗号。

 

最后来看一个“可变的”tuple:

>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])

这个tuple定义的时候有3个元素,分别是'a','b'和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?

别急,我们先看看定义的时候tuple包含的3个元素:

当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

可变类型:list

不可变类型:数值类型、字符串、元组

python中的整数是不限大小的

dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

 

names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85]

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael']

1. key是不能重复

2. dict没有顺序

3. 通过key访问 key不存在要报错 d.get('Bob') 没有不报错

4. 常用操作:

. 新增:

a. 修改:

b. 查 in 判断的是key

c. del 内存马上回收 clear()

d. len()

e. keys()

f. values()

g. items()

posted @ 2018-07-02 13:17  后山人  阅读(253)  评论(0编辑  收藏  举报