Python基础学习之列表

内容摘要
之前的文章里我们已经讲过了数字和字符串,它们是两种很基本的对象,今天要学的 list 也是一种对象,它在 Python 中具有非常强大的功能。
文章正文

列表定义

之前的文章里我们已经讲过了数字和字符串,它们是两种很基本的对象,今天要学的 list 也是一种对象,它在 Python 中具有非常强大的功能。

Python 中,列表用一对方括号 -- [] 表示,在方括号里你可以数字,字符串也可以是其他对象,甚至可以是多种不同的对象。除此以外,列表中元素的个数可以无限大,当然这是理想状态,我们总还是要看硬件设备的脸色行事。

>>> a = []

>>> a

[]

>>> b = ["1",2,"abcd"]

>>> b

["1", 2, "abcd"]

>>> c = [1,"asd",[1,2,3]]

>>> c

[1, "asd", [1, 2, 3]]   

索引和切片

还记得什么是索引和切片吗?如果忘记了,可以去博主的Python交流.扣扣.裙 :879151479还可以跟行业大牛交流讨教!

列表和字符串一样,都是序列,列表里的元素也是有顺序的,所以也是有索引和切片的,看看下面的例子就明白了。

>>> a = [1,"2","rocky"]

>>> a[0]

1

>>> a[1]"2"

>>> a[:3]

[1, "2", "rocky"]

>>> a[1:3]

["2", "rocky"]

>>> a[2][0:3]"roc"   

由上面的例子我们可以看出来,其实列表里的索引和序列与字符串里的是一样的,我们完全可以把之前在字符串中的理解照搬过来,所以列表也可以从右向左编号,依次是 -1,-2,-3...但是如果要是切片的话,这里要注意了,请看下面的例子:

>>> str = ["abc","bcd","123"]

>>> str[-3:-1]

["abc", "bcd"]

>>> str[-1:-3]

[]   

看明白了吗?

序列都是从左向右排,不管你的下标是正的还是负的都是这个规律。

当然了序列里还可以跳步,其实它的完整的写法是 list[start:end:step],默认step = 1 。

>>> str = [1,2,3,4,5,6,7,8]

>>> str[::2]

[1, 3, 5, 7]   

在这里再多补充一点, step 也是可以等于负数的,str[::-1] 表示的是从列表的右边看这个列表,然后按照 step = 1 去列表中的元素,当然 step 还可以等于 -2,-3,具体是多少看到时候看心情。

>>> str = [1,2,3,4,5,6,7,8]

>>> str[::-1]

[8, 7, 6, 5, 4, 3, 2, 1]

>>> str[::-2]

[8, 6, 4, 2]   

列表操作

列表是序列,但凡是序列都有基本的几种操作,比如在字符串的时候我们就讲过它的几种操作,列表的基本操作和字符串的差不多,在这基础上,列表还有其独特的操作,对于基本操作,比如连接操作等我在这里就不讲了,忘记的可以求看前面的文章,我在这里只是说一下列表独特的操作。

列表与字符串一个很大的不同是,字符串不可修改,但是列表可以修改。

>>> str = ["python","c++","java"]

>>> str[0] = "c#"

>>> str

["c#", "c++", "java"]

>>> name = "rocky"

>>> name[0] = "R"

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

TypeError: "str" object does not support item assignment   

其次,除了可以修改元素以外,列表还可以继续给自己添加元素,但是不是说列表随便可以给自己加戏,必须要用 append() 方法向列表中追加元素,追加到末尾。

>>> str = ["python","c++","java"]

>>> str[3] = "c#"

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

IndexError: list assignment index out of range

>>> str.append("c#")

>>> str

["python", "c++", "java", "c#"]   

常用列表函数

作为 Python 中出了名的苦哈哈,它必然有很多的函数去实现功能,感兴趣的朋友们可以用 dir(list) 查看,我在这里主要说一下那些经常用到的。

这里免费送大家一套2020最新python入门到高级项目实战视频教程,可以去博主Python交流.扣扣.裙 :879151479还可以跟行业大牛交流讨教!

 

1.append:这个其实我们在昨天的文章 ( 零基础学习 Python 之列表 ( 一 ) )中说过,它执行的结果就是将某个元素加入到一个一直列表的最右边。

>>> str = [1,2,3,4,5]

>>> str.append(6)

>>> str

[1, 2, 3, 4, 5, 6]   

2.extend:官方的说法是从可迭代的对象那里获取元素,将它们追加到已知的列表中,从而达到扩充的目的,其实就是能够将两个列表合并。

>>> str = [1,2,3,4,5]

>>> str1 = ["abc","def"]

>>> str.extend(str1)

>>> str

[1, 2, 3, 4, 5, "abc", "def"]   

3.count:这是一个可以帮我们搞清楚列表中的元素重复出现次数的方法。

>>> a = [1,2,3,4,5,1,2,3]

>>> a.count(1)

2

>>> a.append("a")

>>> a.append("a")

>>> a

[1, 2, 3, 4, 5, 1, 2, 3, "a", "a"]

>>> a.count("a")

2

>>> a.count("b")

0   

4.index:该函数能够查到你想查的函数在列表中第一次出现的位置,比起之前的文章我们说的索引,这个才是真真正正的索引。

>>> a = [1,2,3,4,"abc","def"]

>>> a.index(2)

1   

5.insert:这个厉害了,之前在 1 和 2 中我们说的 append 和 extend 只是能在列表的最右添加元素,而 insert 可以在列表的任意位置增加一个元素。

>>> a = [1,2,3,4,"abc","def"]

>>> a.insert(0,"rocky")

>>> a

["rocky", 1, 2, 3, 4, "abc", "def"]   

6.remove & pop:列表中的元素不光能够增加元素,还可以删除元素, remove() 和 pop() 就是列表用来删除元素的函数。romove() 函数删除元素首先这个元素必须要存在,其次它是在原列表上进行删除,当列表中有重复元素的时候,只删除第 1 个。

>>> a = [1,2,3,4,1]

>>> a.remove(1)

>>> a

[2, 3, 4, 1]

>>> a.remove("a")

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

ValueError: list.remove(x): x not in list   

pop() 函数如果填写删除元素的索引的话,那么就是删除该元素,如果没有制定删除元素的索引,则删除列表的最后一个元素,并且 pop() 函数有返回值,返回的就是删除的那个元素。

>>> a = [1,2,3,4,1]

>>> a.pop(1)

2

>>> a.pop()

1

>>> a

[1, 3, 4]   

7.reverse:这个函数很简单,就是直接把列表的元素顺序反过来。

>>> a = [1,2,3,4,1]

>>> a.reverse()

>>> a

[1, 4, 3, 2, 1]   

8.sort:这个函数是对列表进行排序,默认是递增排序,通过改变默认参数 reverse 的值可以实现递减排序。

>>> a = ["c","d","a","k"]

>>> a.sort()

>>> a

["a", "c", "d", "k"]

>>> a.sort(reverse = True)

>>> a

["k", "d", "c", "a"]   

比较列表 & 字符串

列表和字符串这两种对象类型有很多相似的地方,也有很大的区别,在这里简单比较一下,也算是对前面所学的一个复习。

相同点:

1.两者都是序列类型,都可以从左向右(从左向右),依次用 0,1,2...(-1,-2,-3...)表示,通过这样的方式建立索引,同样可以用切片的方法得到 一个或多个元素。

2.对于序列的基本操作来说,二者都适用,比如连接操作等,还有像 len() 这一类的函数也都是适用的。

不同点:

1.字符串和列表的最大区别就是:列表的可变的,但是字符串是不可变的。我们在上面讲到的列表函数,诸如 append(),insert(),pop() 等对字符串来说都是不适用的。

2.元素的包裹性,这是我自己想的一个词,可能不太贴切。字符串里的每个元素都只是字符,而列表里的元素可以是其它任何的诸如数字,字符串,列表等对象类型。

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!