Python 的四种数据结构

本篇文章将会讲解Python数据结构中的list、tuple、set、dict。

list

list是一种有序集合

操作数据

直接添加数据
mylist = ['Google', 'Microsoft', 'Apple']
追加元素
mylist.append('Facebook')  # ['Google', 'Microsoft', 'Apple', 'Facebook']
指定位置插入元素
mylist.insert(1, 'Orcle')  # ['Google', 'Orcle', 'Microsoft', 'Apple', 'Facebook']
删除元素
# 删除尾部元素
mylist.pop()  # 会返回被删除元素
# 删除指定位置的元素
mylist.pop(1)  # 删除索引为1的元素,并返回删除的元素
替换元素
mylist[0] = 'Facebook'
mylist[1] = ['python', 'java', 'php']  # 集合的数据类型可以不同,也可以是集合
排序
mylist = [1, 2, 5, 4]
mylist.sort()          # [1, 2 ,4, 5]

如果是字母,则根据Ascii码来排序

获取长度

同获取字符串长度一样,都是使用len()函数即可。

len(mylist)

获取数据

mylist[0]  # 'Google
mylist[-1]  # 'Apple'

如果索引超出范围是,会抛出异常:IndexError: list index out of range

Tuple

Tuple,元组,用法与List类似,但Tuple一经初始化,就不能修改,没有List中的append(), insert(), pop()等修改的方法

注意点

1. 一个元素问题

Tuput在定义只有一个元素的元组时候,需要在后面加上,来消除歧义

t = (1,)  # 如果需要是Tuple,就必须加上逗号,否则变成成了数字1了
# 这里如果没有“,”就变成了“(1)”
2. 引用类型问题

看一个例子:

t = (1, [2, 3])
t[1][0] = '2'

输入后并没有报错,值也的确修改了,这是因为Tuple中知识保存了对象的引用,所以这么修改也是合理的,如果不了解引用就去百度看看。

dict

全称dictionary,在Java语言中是Map,使用“键-值”对的形式存储。查找速度快。看个例子:

d = {'Beijing': '010', 'Guangzhou': '020'}
d['Shanghai'] = '021'  # 如果不存在就添加,存在就是修改
d['Guangzhou']         # 返回对应键的值,如果不存在就报错

# 如果需要判断是否存在某个key,可以使用如下方法:
'Shenzhen' in d        # False
'Guangzhou' in d       # True

获取也可以使用get()方法:

d.get('Beijing')       # '010'
d.get('Shenzhen')      # None

# 第二个参数可以设置个默认值,如果不存在就会返回该默认值,而不是None
d.get('Shenzhen', '')  # ''

set

set的特点是无序、不重复。set就是dict中的key,不存储value,

用法

s = set([1, 2, 3])          # {1, 2, 3}
s = set([3, 2, 1])          # {1, 2, 3}
s = set([1, 2, 3, 2, 2, 2]) # {1, 2, 3}

通过返回值可以看出set就是dict中的key

操作

1. 基本操作
s.add(4)          # {1, 2, 3, 4}
s.remove(4)       # {1, 2, 3}
2. 交集与并集
s1 = set([1, 2, 3])
s2 = set([1, 2, 4])
s1 & s2                # {1, 2}
s1 | s2                # {1, 2, 3, 4}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值