Python入门(6)——列表

列表的定义

列表是由一系列按特定顺序排列的元素组成。

列表可以包含不同类型的元素。列表内元素的值可以重复。

列表通常用单词名称的复数表示。

列表用方括号 [ ] 表示,元素用 , 隔开。

>>> numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print(numbers)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> type(numbers)<class 'list'>>>> list = [1, 'Hello', True, 12.56]>>> print(list)[1, 'Hello', True, 12.56]

获取列表的元素

正向获取列表元素

Python获取列表的元素可以类似看作在C++或Java中获取数组的元素,只需要提供该列表名以及对应的元素索引即可获取相应元素。注意:索引值从0开始,即获取列表元素的索引范围为 0  ~  列表长度-1 。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> print(fruits[1])pear

逆向获取列表元素

当然,Python还提供了相当方便的获取列表倒数某个元素的写法,即获取倒数第一个元素的索引为 -1 ,获取倒数第二个元素的索引为 -2 ,以此类推,获取列表倒数某个元素的索引范围为  -1  ~  -列表长度 。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> print(fruits[-5])peach

在列表中查值

使用 index() 方法,可以传入要查找的参数,如果在列表中查出有此值,则返回对应值的索引。如果没有找到,则报ValueError错误。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> fruits.index('grape')3>>> fruits.index('people')Traceback (most recent call last):  File "<pyshell#12>", line 1, in <module>    fruits.index('people')ValueError: 'people' is not in list

往列表中添加元素

在列表末尾添加元素

想要直接在列表末尾添加元素,可以直接使用 append() 方法,将要插入到列表尾的元素作为参数传给此方法。

>>> list1 = ['abc', 'edf']>>> list1.append('ghi')>>> print(list1)['abc', 'edf', 'ghi']

在列表中的某个位置添加元素

想要在列表的特定位置添加元素,可以使用 insert() 方法,此方法有两个参数,第一个参数为要插入元素的索引值(从0开始),第二个参数给出要插入的元素值。

>>> list2 = [123, 456]>>> list2.insert(1,789)>>> print(list2)[123, 789, 456]

修改列表中的元素

修改列表元素的方法跟取列表中元素的方法类似,只要给出列表名以及索引,用赋值语句对其进行修改就行。

>>> list3 = [11, 22, 33, 44]>>> list3[1] = 99>>> print(list3)[11, 99, 33, 44]>>> list3[-2] = 0>>> print(list3)[11, 99, 0, 44]

删除列表中的元素

删除列表中特定位置的元素

使用 del 语句,可以删除列表中特定位置的元素。

>>> list4 = [11, 22, 33, 44, 55]>>> del list4[2]>>> print(list4)[11, 22, 44, 55]>>> del list4[-1]>>> print(list4)[11, 22, 44]

删除列表中最后一个元素并返回其值

使用 pop() 方法,可以将列表最后一个元素弹出,并取得元素的值。

>>> list5 = [10, 11, 12, 13, 14, 15]>>> x = list5.pop()>>> print(x)15>>> print(list5)[10, 11, 12, 13, 14]

删除列表中任何一个元素并返回其值

使用 pop() 方法并代入索引值作为其参数,可以将列表某个位置上的元素弹出,并取得元素的值。

>>> list6 = ['a', 'b', 'c', 'd']>>> y = list6.pop(2)>>> print(y)c>>> print(list6)['a', 'b', 'd']

删除列表中第一次出现的指定元素

使用 remove() 方法,传入元素的值作为参数,即可将列表中第一次出现的该元素删除。

>>> list7 = [1, 2, 3, 4, 2, 3]>>> list7.remove(2)>>> print(list7)[1, 3, 4, 2, 3]

删除列表中所有指定元素

使用while循环搭配 remove() 方法,可以删除列表中所有指定元素。

>>> list7 = [1, 2, 3, 4, 2, 3]>>> while 2 in list7:    list7.remove(2)>>> print(list7)[1, 3, 4, 3]

删除列表的所有元素

使用 clear() 方法,即可将列表的所有元素删除。

>>> list8 = [1, 2, 3]>>> list8.clear()>>> print(list8)[]

删除列表中指定范围内的元素

使用 del 删除列表一段连续的元素,方法跟字符串切片类似。

>>> list9 = [20, 21, 22, 23, 24, 25, 26]>>> del list9[1:4]>>> print(list9)[20, 24, 25, 26]

列表连接

列表连接与字符串连接类似,使用+号即可。下面的例子演示了如何将两个列表连接到一起。

>>> list9 = [1, 2, 3]>>> list9 = list9 + ['a', 'b', 'c']>>> print(list9)[1, 2, 3, 'a', 'b', 'c']

列表排序

永久排序

使用 sort() 方法,可以对列表进行排序,使用此方法后,列表就是已经排完序的了,不可恢复原排序。默认排序是按升序,即字母按a~z进行排序。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> fruits.sort()>>> print(fruits)['apple', 'banana', 'grape', 'lemon', 'peach', 'pear', 'pineapple']

如果想要让列表进行逆序排序,可以在 sort() 方法中加入参数 reverse=True 。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> fruits.sort(reverse=True)>>> print(fruits)['pineapple', 'pear', 'peach', 'lemon', 'grape', 'banana', 'apple']

临时排序

使用 sorted() 方法,可以对列表进行临时排序,使用此方法后,列表还是原排序。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> print(sorted(fruits))['apple', 'banana', 'grape', 'lemon', 'peach', 'pear', 'pineapple']>>> print(fruits)['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']

随机排序

使用Python的random模块函数shuffle(),可以对列表进行随机排序,此排序的结果是永久的。

>>> import random>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> print(fruits)['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> random.shuffle(fruits)>>> print(fruits)['pineapple', 'banana', 'lemon', 'apple', 'pear', 'peach', 'grape']

列表反转

使用 reverse() 方法,可以对列表进行反转。

>>> list10 = [2, 5, 9, 6, 3]>>> list10.reverse()>>> print(list10)[3, 6, 9, 5, 2]

获取列表长度

使用 len() 方法,可以获取列表的长度。

>>> fruits = ['apple', 'pear', 'peach', 'grape', 'banana', 'pineapple', 'lemon']>>> len(fruits)7

遍历列表

使用 for 循环,可以遍历整个列表。

>>> citys = ['Beijing', 'Shenzhen', 'Shanghai']>>> for city in citys:    print(city)BeijingShenzhenShanghai

创建数值列表

要创建数值列表,我们可以使用函数 list() 将 range() 的结果直接转换为列表。下面的例子演示了如何创建一个包含数值5~10的数值列表。

"""创建一个包含数值5~10的数值列表Version: 1.0Author: Caizi"""numList = list(range(5, 11))print(numList)

对数值列表进行简单的统计计算

Python中有专门处理数值列表的内置函数,我们可以直接调用这些函数统计数值列表的信息。下面的例子演示了求出数值列表的最大值、最小值和总和。

"""求出数值列表的最大值、最小值和总和Version: 1.0Author: Caizi"""numList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]print(min(numList))print(max(numList))print(sum(numList))

使用列表解析创建列表

Python中可以在创建列表的时候使用列表解析自动创建列表。下面的例子演示了如何创建一个平方数列表。

"""创建平方数列表Version: 1.0Author: Caizi"""squares = [x**2 for x in range(1, 11)]print(squares)

获取子列表

获取子列表我们使用列表切片方式,列表切片和字符串切片类似,只需要指定切片范围即可。下面的例子演示了对列表的切片操作。

"""列表的切片操作Version: 1.0Author: Caizi"""squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]print(squares[3:6])

遍历子列表

我们可以直接在for循环使用列表切片,即可遍历列表的部分元素。下面的例子演示了遍历列表前5个数。

"""遍历列表前5个数Version: 1.0Author: Caizi"""squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]for square in squares[:5]:    print(square)

复制列表

在Python中复制列表,我们可以使用列表切片操作,直接把整个列表切下来做为另一个新列表,完成列表的复制。下面的例子演示了如何使用切片操作复制列表。

"""复制列表Version: 1.0Author: Caizi"""squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]list = squares[:]print(list)list = list * 2print(list)

注意:在Python复制列表,千万不能使用赋值运算符直接把旧列表赋值给新列表,因为在Python中,赋值运算符赋的是对象的id值,所以使用下面例子的方法直接赋值,它们id值一样,即都指向同一个对象,也就是说你只是取了该对象的一个别名而已,并没有新建新列表。

"""错误的复制列表方法Version: 1.0Author: Caizi"""squares = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]list = squaresprint(id(squares))print(id(list))print(list)

检查元素是否在列表中

在Python中,检查元素是否在列表中可以使用in和not in操作符。下面的例子演示了如何检查元素是否在列表中。

"""检查元素是否在列表中Version: 1.0Author: Caizi"""list = [1, 2, 3, 4, 5]print(1 in list)    # Trueprint(6 in list)    # False

列表的多重赋值操作

列表多重赋值即用列表中的值为多个变量赋值。多重赋值技巧在Python中很常用到,下面的例子演示了数据的多重赋值和列表的多重赋值。

"""多重赋值Version: 1.0Author: Caizi"""# 数据的多重赋值a, b, c = 10, 20, 30print(f'a = {a}')    # a = 10print(f'b = {b}')    # b = 20print(f'c = {c}')    # c = 30# 列表的多重赋值student = [1001, 'boy', 18]id, sex, age = studentprint(f'id: {id}')      # id: 1001print(f'sex: {sex}')    # sex: boyprint(f'age: {age}')    # age: 18

同时获取列表的索引和对应的值

在Python中可以调用 enumerate() 函数,此函数返回两个值,一个是表项的索引和表项的本身。下面的例子演示了如何同时取得列表的索引和此索引上的值。

"""获取列表索引及其对应的值Version: 1.0Author: Caizi"""fruits = ['apple', 'peach', 'banana', 'lemon']for index, item in enumerate(fruits):    print(f'index {index} in fruits is: {item}')
(0)

相关推荐

  • 一文看懂Python中的集合运算&,|,

    关于集合的概念 Python 中常用的集合方法是执行标准的数学运算,例如:求并集.交集.差集以及对称差.下图显示了一些在集合 A 和集合 B 上进行的标准数学运算.每个韦恩(Venn)图中的红色部分是 ...

  • 印度给火龙果改名,只因为dragon与中国有关?

    今日问题 ⊙"火龙果"用英语怎么说?⊙ 各位,火龙果大家不陌生吧,世界各地广泛栽培,(吃一口)甘甜爽口,可就是这么一个水果,最近印度的一些政客啊,就跟它较上劲了.非得要改名字! 那 ...

  • 温故而知新--day1

    变量类型 变量是计算机存储数据的内存空间,由于计算机可以处理不同的数据,不同的数据就要定义不同的数据类型.python的数据类型很多,还可以自定义数据类型,常用的一般数据类型有以下几种: 整型: 在p ...

  • 好程序员Python培训分享入门之元组列表字典详解

    好程序员Python培训分享入门之元组列表字典详解,文中通过示例代码介绍的非常详细,下面我们一起来看一下吧. Tuple叫做tuple,用小括号.或者无括号来表述,是一连串有顺序的数字. a_tupl ...

  • 第75天: Python 操作 Redis 数据库介绍

    Redis 作为常用的 NoSql 数据库,主要用于缓存数据,提高数据读取效率,那在 Python 中应该如果连接和操作 Redis 呢?今天就为大概简单介绍下,在 Python 中操作 Redis ...

  • 【读码】python中的小星星*用法示例

    读懂代码很难的,比写代码还难,但也是最节约时间最好的学习方式之一.今天我们通过读代码来了解一下python中的 * 或者 ** .通过读代码,帮助我们学习python中的 * 功用.这里我一共列了8个 ...

  • 【少儿慢速英语55】《Do you like bananas?》

    今天是<少儿慢速英语>第55课:Do you like bananas? Do you like bananas? Yes, I do. I like bananas. Do you li ...

  • Python 入门系列(缩进指的是代码行开头处的空格在其他编程语言中使用的缩进仅仅是为了提高可读性

    https://www.toutiao.com/a6913102881310654980/ 正如前面一篇学到的,Python 语法是可以直接在 命令行 中被执行,如下代码: >>> ...

  • 华为集团把python入门知识点整理成漫画书了,让人茅塞顿开

    华为集团把python入门知识点整理成漫画书了,让人茅塞顿开

  • 现在Python发展怎么样?Python入门

    当大家问及现在哪门编程语言最火?我该学习哪门编程语言呢?很多人肯定会推荐Python.Python是现在非常热门的编程语言,尤其是随着人工智能.大数据时代的到来,Python变得异常火爆.那么Pyth ...

  • Pandas和Series有何关联?Python入门分享!

    想必大家都知道pandas,它是基于Numpy的一种工具,可以解决数据分析任务,也是Python学习过程中经常会用到的工具.而Series是pandas中最基本的对象,类似一种一维数组,那么Panda ...

  • MongoDB和Redis有什么不同?Python入门!

    众所周知,MongoDB和Redis都属于Nosql数据库,采用结构型数据存储,而且两者都非常依赖内存的大小,那么MongoDB和Redis有什么区别呢?通过以下这几点为大家介绍一下. 1.内存管理机 ...

  • Python设计模式是什么?Python入门

    设计模式想必大家都比较熟悉,它是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式可以让代码更容易被他人理解.保证代码的可靠性,而且使用设计模式还需要遵循一定的原则.那么P ...

  • Python和JavaScript哪个简单?Python入门!

    在编程界,Python和JavaScript都是非常具有影响力的编程语言,占据着主导性的地位,而且简单易学.通俗易懂,非常适合0基础小白.那么Python和JavaScript哪个更容易上手呢?我们通 ...

  • Python3和Python2有何区别?Python入门!

    Python是一门非常不错的编程语言,越来越多人都想要学习Python,不过在学习Python之前,很多人都疑惑Python有两个版本,分别是Python2和Python3,它们之间有什么区别?选择哪 ...

  • 网络编程及前端面试题!Python入门

    当我们学习Python时,需要掌握的的知识有很多,除了有关Python的专业知识外,我们还需要学习网络编程.前端等知识,对此这篇文章为大家总结一下Python常见面试题之网络编程及前端的问题. 第一: ...