Python打卡六——列表

Python打卡(六)

Python中的列表讲解

一、序列

序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。序列在内存中的表示方法如下所示:
在这里插入图片描述
在Python中常见的序列有:字符串、列表、元组、字典、集合。

二、列表

列表:用于存储任意数目、任意类型的数据集合。
列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:a = [10,20,30,40] 其中,10,20,30,40这些称为列表a的元素。列表中的元素可以互不相同,可以是任意类型,比如:a = [10,20,‘abc’,True]

列表对象的常用方法有:

在这里插入图片描述
在这里插入图片描述
Python中的列表大小可变,可根据需要随时增加或缩小。

(1)创建列表

1、使用[ ]基本语法创建。

>>>a = [10,20,30,"rougucha"]
>>>b = [ ]   #创建一个空的列表对象

2、list()创建

使用list()可以将任何可迭代数据转换成列表。

>>>a = list()      #创建一个空的列表对象
>>>a = list(range(10))
>>>a
[0,1,2,3,4,5,6,7,8,9]
>>>a = list("rougucha")
>>>a
['r','o','u','g','u','c','h','a']

3、使用range()创建整数列表

range()可以帮助我们非常方便的创建整数列表,其语法格式为:range([start],end,[step]),其中:
start参数表示起始数字,可选,默认为0;
end参数表示结尾数字,必选;
step参数表示步长,可选,默认为1。
Python3中range()返回的是一个range对象,而不是列表,我们需要通过list将其转换成列表对象。
典型示例如下所示:

>>>list(range(3,15,2))
[3,5,7,9,11,13]
>>>list(range(15,3,-1))
[15,14,13,12,11,10,9,8,7,6,5,4]
>>>list(range(3,-10,-2))
[3,1,-1,-3,-5,-7,-9]

4、推导式生成列表

通过此方法可以创建出非常复杂的序列。一般是通过控制语句进行创建。例如:

在这里插入图片描述
(2)列表元素的增加和删除

当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。
1)列表元素增加的几种方法:

1、append()方法
原地修改列表,即直接在列表尾部增加元素,此方法的速度最快,推荐使用。
例如:

>>>a = [10,20]
>>>a.append(80)
>>>a
[10,20,80]

2、+运算符操作
并不是真正的尾部添加元素,而是创建新的列表对象,将原列表元素和新列表的元素依次复制到新的列表对象中,这样会涉及大量的复制操作,对于操作大量元素不建议使用。
例如:

>>>a = [20,40]
>>>id(a)
46016072
>>>a = a + [10]
>>>id(a)
46015432
>>>a
[20,40,10]

3、extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的对象。所以当两个列表进行合并时推荐使用此方法。
例如:

>>>a = [20,40]
>>>id(a)
46016072
>>>a.extend([50,60])
>>>id(a)
46016072
>>>a
[20,40,50,60]

4、insert()插入元素
使用insert()方法可以将指定元素插入到列表对象的任意指定位置。这样会让插入位置后面的所有元素进行移动,会影响处理速度。涉及大量元素时尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),他们在删除非尾部元素时也会发生操作位置后面元素的移动。
例如:

>>>a = [10,20,30]
>>>a.insert(2,100)
>>>a
[10,20,100,30]

5、乘法扩展
使用乘法扩展,生成一个新列表,新列表元素是原列表元素的多次重复。例如:

>>>a = ['rgc',100]
>>>b = a * 3
>>>b
['rgc',100,'rgc',100,'rgc',100]

2)列表元素删除的几种方法:

1、del删除:删除列表指定位置的元素,本质也是数组的拷贝。

>>>a = [100,200,888,300,400]
>>>del a[2]
>>>a
[100,200,300,400]

在这里插入图片描述
2、pop()方法
pop()方法删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。
例如:

>>>a = [10,20,30,40,50]
>>>b = a.pop()
>>>b
50
>>>a
[10,20,30,40]
>>>c = a.pop(1)
>>>c
20
>>>a
[10,30,40]

3、remove()方法
删除首次出现的指定元素,若不存在该元素则抛出异常。此方法中不是索引,而是元素本身的值。

>>>a = [10,20,30,40,20,90,50,20,60]
>>>a.remove(20)
>>>a
[10,30,40,20,90,50,20,60]
>>>a.remove(100)
Error

(3)列表元素的访问和计数

1、通过索引直接访问元素
在这里插入图片描述
2、使用index()访问列表元素
在这里插入图片描述
在这里插入图片描述
3、count()函数
在这里插入图片描述
4、len()函数
在这里插入图片描述
5、成员资格判断

判断列表中是否存在指定元素,我们可以通过使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是一般我们会使用in关键字进行判断,直接返回True或者False。
在这里插入图片描述
(4)列表的切片

切片操作可以让我们快速提取列表元素,其标准格式是:
[其实偏移量start:终止偏移量end:步长step]
其典型的操作有如下几种:
在这里插入图片描述
在这里插入图片描述
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围内也不会报错。起始偏移量小于0则会被当做是0,终止偏移量大于“长度-1”会被当做是字符长度-1。例如:

>>>[10,20,30,40,50,60,70,80,90][3:50]
[40,50,60,70,80,90]

(5)列表的遍历

>>>a = [10,20,30,40,50,60,70,80,90]
>>>for obj in a:
>>>		print(obj,end='')
10 20 30 40 50 60 70 80 90

(6)列表排序

1、修改原有列表,不生成新的列表排序

调用列表排序方法——a.sort()

>>>a = [10,30,60,20,50]
>>>id(a)
46017416
>>>a.sort()            #默认是升序排列
>>>a
[10,20,30,50,60]
>>>id(a)
46017416
>>>a.sort(reverse=True)        #降序排列
>>>a
[60,50,30,20,10]
>>>import random
>>>random.shuffle(a)         #打乱顺序
>>>a
[60,30,10,20,50]
>>>random.shuffle(a)         #打乱顺序,可用在洗牌里面
>>>a
[10,20,60,30,50]

2、建立新列表排序

调用内置函数sorted()进行排序,这个方法返回新列表,不对原列表进行修改。

>>>a = [10,30,60,20,50]
>>>id(a)
46017402
>>>a = sorted(a)            #默认是升序排列
>>>a
[10,20,30,50,60]
>>>id(a)
46017408
>>>a = sorted(a,reverse=True)        #降序排列
>>>a
[60,50,30,20,10]
>>>id(a)
46017484

(7)列表逆序排列

reversed()函数——逆序排列

逆序排列有多种方式,比如
1)[20,10,30,40][::-1] 切片操作使得逆序
2) reversed函数逆序排列

>>>a = [20,10,30,40]
>>>c = reversed(a)
>>>c
<list_reverseiterator object at 0x0000000002BCCEB8>
>>>list(c)
[40,30,10,20]
>>>list(c)
[]

内置函数reversed不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。注意,迭代器只能用一次,迭代器中包含了一个指针,所以迭代完一次之后指针就到了最开始的位置,所以第二次使用list时返回了空列表。

(8)列表的其余内置函数

1、max和min
用于返回列表中的最大值和最小值

>>>a = [20,10,30,40]
>>>max(a)
40
>>>min(a)
10

2、sum
对数值型列表的所有元素进行求和操作,对非数值型列表运算则报错。

>>>a = [3,10,20,15,9]
>>>sum(a)
57

(9)二维列表

1、二维列表
一维列表可以帮助我们存储一维、线性的数据。二维列表可以帮助我们存储二维、表格的数据。
例如下面这个表格用二维列表存储起来的格式如下:

姓名年龄薪资地点
任嘉伦840000北京
任国超530000青岛
Allen360000深圳
a = [
		["任嘉伦",8,40000,"北京"]
		["任国超",5,30000,"青岛"]
		["Allen",3,60000,"深圳"]
	]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值