【Python数据分析基础-5】数据结构之列表

【Python数据分析基础-5】数据结构之列表

0. 引入

上篇文章介绍了元组,提到了元组的内容和长度无法改变,这篇文章说说列表。列表与元组十分相似,但是列表的长度以及内容都是可以修改的

1. 列表的创建及获得

列表可以通过中括号[]或list函数进行定义,这样定义出来的列表便是空列表:

a = list()
b = []
print(a, b)
[][]

同时,可以利用list函数将其他的数据结构转化为列表:

t = (1, 2, '3', None)
list(t)
[1, 2, '3', None]

又如将迭代器或者生成器转为列表:

list(range(5))
[0, 1, 2, 3, 4]

2. 元素的增加与移除

2.1 元素的增加

常用的列表元素增加方法为:append方法、insert方法

append方法将元素添加到列表的尾部:

x = list(range(5))
x.append(6)
print(x)
[0, 1, 2, 3, 4, 6]

insert方法可以将元素插入到指定位置(索引从0开始):

x = list(range(5))
x.insert(1, 6)   ## 在索引为1的位置插入元素6
print(x)
[0, 6, 1, 2, 3, 4]
2.2 元素的移除

常见的列表元素移除方法为:pop、remove、del

pop方法如果不传入参数的话,默认弹出列表最后一个元素,若传入参数,则为弹出相应位置的元素

x = list(range(5))
print(x.pop())
print(x)
4
[0, 1, 2, 3]

pop弹出的元素是可以获取的,弹出后列表便无该元素。

x = list(range(5))
print(x.pop(2))  # 弹出索引为2的元素
print(x)
2
[0, 1, 3, 4]

remove方法则是移除符合要求值的元素:

x = list(range(5, 10))
x.remove(7)  # 移除元素7
print(x)
[5, 6, 8, 9]

del方法用于与pop相似,但不会弹出元素:

x = list(range(5))
del x[2]    # 移除索引为2的元素
print(x)
[0, 1, 3, 4]

3. 列表的连接与联合

列表的连接与联合有两种方法,一种是直接使用“+”将两个列表相连接,另一种是使用extend方法:

# 创建2个列表
x1 = list(range(5))
x2 = list(range(5, 10))
print(x1, x2)
[0, 1, 2, 3, 4] [5, 6, 7, 8, 9]

直接相连

print(x1+x2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

extend方法

x1.extend(x2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

两种方法中“+”是代价更高的方法,因为这个过程中创建了新列表,并且还需要复制对象。所以若有大规模数据,使用extend将元素添加到已存在列表中是更好的方法。

4. 列表切片

使用切片方法可以取列表子集,基本形式是**[start:stop]**,其中切片出的序列包含索引为start的元素,不包含索引为stop的元素。

x = list(range(5, 15))
print(x)
print(x[5: 10])
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[10, 11, 12, 13, 14]

其中stop和start可以省略。省略start时,表示从序列的起始位置开始,到stop的位置:

x[:5]
[5, 6, 7, 8, 9]

省略stop时,表示从序列的stop开始,到序列的结束位置:

x[5:]
[10, 11, 12, 13, 14]

负索引可以从序列的尾部进行索引:

x[-4:-1]  # 表示从序列的倒数第4个元素开始,到倒数第1个元素,其中倒数第1个元素不可取
[11, 12, 13]

步进值step在第二个冒号后面使用,表示每隔几个数取一个值:

x = list(range(5, 15))
print(x)
x[::2]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
[5, 7, 9, 11, 13]

特别地,[::-1]表示将序列进行翻转

x[::-1]
[14, 13, 12, 11, 10, 9, 8, 7, 6, 5]

下一篇文章,将介绍内建序列函数!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值