Python学习03:序列

Posted CQ小子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习03:序列相关的知识,希望对你有一定的参考价值。

本文学习Python的笔记,仅供参考


序列

一组有顺序的序列集合,这个集合可以包括一个或者多个元素,当然也可以为空集合,类似于数学中的集合概念。

序列有2中:Tuple 和 List


List

这种数据类型是Python内置的一种,是一种有序集合,类似于C语言中的数组,可以看下例子,a中有3个元素,他们是顺序排列,类型为list

>>> a = [1,2,3]
>>> print(a,type(a))
[1, 2, 3] <class 'list'>
因为List是顺序排列,所以可以利用索引来访问每一个变量,越来越像数组了,就连下标规定都是从0开始

>>> a[0]
1
>>> a[1]
2
>>> a[2]
3

一些特殊之处,比如只有3个元素,我取第四个元素的时候,就越界了,产生了错误,但是如果索引为-1的时候就取到了最后一个元素,和C语言有差别哈。

Traceback (most recent call last):
  File "<pyshell#60>", line 1, in <module>
    a[3]
IndexError: list index out of range
>>> a[-1]
3

List是可变的序列,就表示我们可以对其进行插入,删除操作,下面我们来看:

1. 在尾部增加一个元素,使用append方法,这里有些面向对象的写法了,List中有元素有方法,可见4被加到List尾部了

>>> a.append(4)
>>> len(a)
4
>>> a[3]
4
2.在中间插入一个元素,使用insert方法,在index处插入元素,比如下面是在位置1插入55.

>>> a.insert(1,55)
>>> print(a)
[1, 55, 2, 3, 4]
3. 删除某个元素,使用pop(i)

>>> a.pop(2)
2
>>> print(a)
[1, 55, 3, 4]
总起来说,这种数据类型还是蛮不错的,动态变化,可操作性强,果真比C语言省不少劲啊。


Tuple

tuple和list非常相似,区别在于tuple变量一旦初始化就不能再更改,声明使用(),List使用[] 

>>> b = (3,4,5,6)
>>> print(b,type(b))
(3, 4, 5, 6) <class 'tuple'>
tuple初始化之后就没法再改变了,没有append,insert这种方法

再来看下可变的Tuple,可以见到tuple t中有3个元素,2个str,一个List,我们知道List的元素是可以修改了,然后改了下List的值,结果tuple对应的值就修改了,那么是真的修改了吗?

>>> t = ('a', 'b', ['A', 'B'])
>>> print(t)
('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> print(t)
('a', 'b', ['X', 'Y'])
这边有两个图,可以看出tuple的内存结构,可以看到t指向是一个tuple的索引内存,每个索引都指向变量,2指向一个list

当list改变之后,但是可以看到内存的指向,其实变得list指向的内容,但是tuple指向的list并没有改变。这样慢慢理解下tuple的指向不变的意思。




参考文章

1. http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316724772904521142196b74a3f8abf93d8e97c6ee6000

以上是关于Python学习03:序列的主要内容,如果未能解决你的问题,请参考以下文章

Python学习03:序列

Python学习03:序列

python代码学习day03-序列化学习pickle及json

python序列

剑指offer——03从尾至头打印列表(Python3)

Python学习:字典(dictionary)