Python基础教程:关于序列操作的方式方法

32 阅读8分钟

上面修改"a"为"aa"也会影响到+的结果L0,因为[‘a’]是一个可变对象。同样对于*的重复操作,也是拷贝引用:

L = []

L1 = [L] * 3

L1

[[], [], []]

L.append(3)

L1

[[3], [3], [3]]

3.len()、max()和min()函数

len()返回序列的元素个数,也就是序列的长度。min()和max()分别返回序列中最小、最大的元素。

len(L), min(L), max(L)

(4, 'a', 'd')

4.找出元素在序列中出现的次数count()

s="hello world"

s.count("h"),s.count("o")

(1, 2)

5.索引取元素

S[i],i为从0开始的数值,可以取负数表示从尾部开始取。

例如:

'''

学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025

寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!

'''

L

['a', 'b', 'c', 'd']

L[0]

'a'

L[1]

'b'

L[-1]

'd'

负数的i等价于len(S)+i作为索引。例如,len(S) = 3, i = -1,表示取最后一个元素,也就是index=2的元素。

6.分片

分片操作用于从序列中取出子序列,它会创建新的内存块来保存取出来的序列对象。

  • 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 "", line 1, in

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 "", line 1, in

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")

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

了解详情:docs.qq.com/doc/DSnl3ZG…