- S[i:j]:从索引位i取到索引位j,不包括j
- S[i:]:从索引位i开始取到最结尾
- S[:j]:从最开头取到索引位j,不包括j
- S[:]:从头取到尾,相当于拷贝了序列,但得到的是新序列
- S[i:j:k]:k表示取元素时的步进间隔,默认为1,表示每个元素都取,如果为2,则表示取一个跳过一个
分片的区间是左闭右开的,所以不会包括j的索引位。i和j可以是负数,负数表示从尾部开始计算索引位。例如,-1表示最后一个元素,-2表示倒数第二个元素。
特别地,如果i = j,则表示找到序列中的这个位置,但因为切片长度位0,所以返回空。
例如:
>>> s = "hello world"
>>> len(s)
11
>>> s[0:6]
'hello '
>>> s[:6]
'hello '
>>> s[6:10] # 不包括index=10
'worl'
>>> s[6:11] # 所以用大于10的结束位
'world'
>>> s[6:]
'world'
>>> s[6:-1]
'worl'
>>> s[:] # 拷贝序列得到副本
'hello world'
>>> s[::1] # 步进为1,默认的
'hello world'
>>> s[::2] # 每次跳过一个元素
'hlowrd'
>>> s[1:1] # 找到index=1的位置
''
7.找出第一个元素的位置index()
index(x,i,j)表示从序列中搜索元素x并返回第一次出现的x的位置,如果给定了i,则表示从索引位i开始搜索,给定了j则表示最多搜索到索引位为j的位置。
如果找不到元素,将报错。i和j可以是负数,但无论它们是正数还是负数,都是搜索的开始和结束位。
>>> s="hello world"
>>> s.index("o")
4
>>> s.index("o",1,-1)
4
>>> s.index("o",-5) # 从倒数第5个元素开始搜索
7
>>> s.index("a") # 搜索不到时报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
不可变序列的操作
相比可变序列,不可变序列的唯一操作是可以支持内置的hash()操作。可变序列无法hash()。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> hash("asd")
-2014632507
>>> hash((1,23))
1320437575
>>> hash([1,23])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
能够hash的不可变序列,意味着能作为dict的key,能保存到set或frozenset中。
可变序列的操作
- s[i] = x、s[i:j] = t将序列中的元素替换成x或可迭代对象t
- s[i:j:K] = t将序列中的元素替换成可迭代对象t,t的长度必须和s[i:j:k]的长度一样
- del s[i]、del s[i:j]删除序列中的元素,等价于s[i] = []、s[i:j] = []
- del s[i:j:k]删除序列中的某些元素,k为步进值
- s.remove(x):移除第一次出现的元素x
- s.clear()表示清空序列中的所有元素,等价于del s[:]
- s.pop([i])表示移除序列s中的第i个元素并返回这个元素,中括号表示可选,如果没有参数,默认移除最后一个元素
- s.append(x)向序列的尾部追加元素x,等价于s[len(s):len(s)] = [x]
- s.extend(t)或s += t表示将t扩展到序列s的尾部,等价于s[len(s):len(s)] = t
- s.insert(i,x)表示将x插入到序列中的i索引位置处,等价于s[i:i] = [x]
- s *= n表示将序列n的元素重复n次追加到s的尾部
- s.copy()表示拷贝序列得到一个新的序列副本,等价于s[:]
- s.reverse()原地反转序列s,为了节约内存空间,所以是原地反转,不会返回反转后的序列
对于序列,还有一个内置函数reversed(SEQ)。与之对应的,还有一个内置函数sorted(),但它操作的对象是可迭代对象,并不一定总是序列。
示例1:序列元素赋值
>>> L = ['aa','bb','cc','dd','ee','ff']
>>> L1 = [1,2,3,4]
>>> L[0] = "a"
>>> L
['a', 'bb', 'cc', 'dd', 'ee', 'ff']
>>> L[1:2] = L1
>>> L
['a', 1, 2, 3, 4, 'cc', 'dd', 'ee', 'ff']
>>> L[::2] = [1,2,3,4,5]
>>> L
[1, 1, 2, 3, 3, 'cc', 4, 'ee', 5]
示例2:删除元素
删除相关操作有del、remove()、pop()、clear()。
例如:
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> L = ['aa','bb','cc','dd','ee','ff']
>>> del L[1]
>>> L
['aa', 'cc', 'dd', 'ee', 'ff']
>>> del L[1:2]
>>> L
['aa', 'dd', 'ee', 'ff']
>>> del L[::2]
>>> L
['dd', 'ff']
>>> L = ['aa','bb','cc','dd','ee','ff']
>>> L.remove('aa')
>>> L
['bb', 'cc', 'dd', 'ee', 'ff']
>>> L.pop()
'ff'
>>> L
['bb', 'cc', 'dd', 'ee']
>>> L.pop(2)
'dd'
>>> L
['bb', 'cc', 'ee']
>>> L.clear()
>>> L
[]
示例3:添加元素
相关操作有append()、extend()、insert()、s *= n。
例如:
>>> L = ['aa', 'bb', 'cc', 'dd', 'ee']
>>> L1 = [1,2,3,4]
>>> L.append("ff")
>>> L
['aa', 'bb', 'cc', 'dd', 'ee', 'ff']
>>> L.insert(1,"a")
>>> L
['aa', 'a', 'bb', 'cc', 'dd', 'ee', 'ff']
>>> L.extend(L1)
>>> L
['aa', 'a', 'bb', 'cc', 'dd', 'ee', 'ff', 1, 2, 3, 4]
>>> L1 \* 2
[1, 2, 3, 4, 1, 2, 3, 4]
示例4:其它操作
拷贝序列copy()、反转序列reverse()。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> L = ['aa', 'bb', 'cc', 'dd', 'ee']
>>> L1 = L.copy()
>>> L1
['aa', 'bb', 'cc', 'dd', 'ee']
>>> L.reverse()
>>> L
['ee', 'dd', 'cc', 'bb', 'aa']
还有一个可用于序列的内置函数reversed(),它反转序列,并返回可迭代对象。所以,如果要将它展现出来,需要构建容器。例如:
>>> L = ['aa', 'bb', 'cc', 'dd', 'ee']
>>> list(reversed(L))
['ee', 'dd', 'cc', 'bb', 'aa']
### 一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
### 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)
### 三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**