python四种数据类型哪几种是有序的_05-Python中的四种数据类型

概述:本文主要分析 Python 中的四种数据类型:list、tuple、dict、set

一、list

list 是一种有序列表,我们可以随时增删 list 中的元素。

list 的元素用中括号 [] 括起来,例如:

>>> coding = [‘C‘, ‘Java‘, ‘PHP‘]>>>coding

[‘C‘, ‘Java‘, ‘PHP‘]

len():获取元素个数

我们可以用 len() 函数来获取 list 中的元素个数:

>>>len(coding)3

通过索引访问元素

list 和 C 语言中的数组一样,索引都从 0 开始。我们可以通过索引来访问 list 中的元素。当索引超出范围时,Python 会报 IndexError 错误。

我们有两种方式获取最后一个元素:

len(coding) - 1

len(-1)

以此类推,list 的下标可以由 0 反推,-1、-2 以此类推。

append():追加元素

可以通过 append() 向 list 末尾追加元素:

>>> coding.append(‘Python‘)>>>coding

[‘C‘, ‘Java‘, ‘PHP‘, ‘Python‘]

insert():插入元素到指定位置

可以将元素插入到 list 的指定位置,原有元素依次后移:

>>> coding.insert(1, ‘C++‘)>>>coding

[‘C‘, ‘C++‘, ‘Java‘, ‘PHP‘, ‘Python‘]

pop():删除元素

可以用 pop() 函数删除 list 末尾的元素:

>>>coding.pop()‘Python‘

>>>coding

[‘C‘, ‘C++‘, ‘Java‘, ‘PHP‘]

通过指定索引,可以用 pop() 删除指定位置的函数

>>> coding.pop(1)‘C++‘

>>>coding

[‘C‘, ‘Java‘, ‘PHP‘]

替换某个元素:直接赋值

可以直接给指定索引的元素赋值,来替换该元素。

list 很灵活:无类型限定

list 中的元素可以是不同数据类型,甚至可以是另一个 list。

二、tuple

tuple 也是一种有序列表,称作元组,和 list 很相近。tuple 的特殊之处在于:一旦初始化就不能修改。自然地,tuple 不会有 append()、pop()、insert() 等方法。

不变带来的好处:安全

因为不可变,所以更安全。如果可能,应尽量用 tuple 代替 list。

定义 tuple 有巨坑

因为 tuple 不可变,所以定义 tuple 时,元素就要确定下来。

定义一个空的 tuple:

t = ()

定义只有 1 个元素的 tuple(前方神坑预警,非战斗人员撤离!!!):

t = (1) #这种方式定义的不是 tuple,而是 1 这个数

t = (1, ) #这样定义的才是只有一个元素的 tuple

敲黑板,划重点:定义只有一个元素的 tuple 时,务必加个逗号。

tuple 之变与不变

tuple 的不变,说的是指向的地址不变。至于指向地址中的内容是否变化,tuple 表示无力管辖。

举个栗子:tuple 中有个元素是 list,tuple 所说的不变,是始终指向这个 list,不能转而指向其他 list。至于这个 list 中的元素是否变化,就不是 tuple 考虑的事情啦。

三、dict

dict 即为字典,类似其他语言中的 map。dict 使用键值对(key-value)存储,查找速度极快。请注意:dict 内部存放顺序和 key 的存入顺序无关。

例如,用 dict 实现工资表并查询:

>>> d = {‘Albert‘: 11000, ‘Chin‘: 5500, ‘Chris‘: 12000}>>> d[‘Albert‘]10000

快是如何练成的

为什么 dict 查找速度快?因为 dict 不是按索引查找,而是使用哈希算法(Hash)根据 key 算出 value 的内存地址,直接去对应的内存取出数据。同理,在向 dict 中加入新的 key-value 对时,也要根据 key 来计算出 value 的地址。由于要根据 key 计算 value 的位置,所以 key 必须是不可变的。

如何将数据放入 dict

方法一:初始化时指定;

方法二:通过 key 放入。例如我们给 Albert 同学涨薪:

>>> d[‘Albert‘] = 15000

>>> d[‘Albert‘]15000

由于key 和 value 是一一对应的,所以向某个 key 赋新值,会将原来的 value 覆盖掉。

如果 key 不存在,dict 会报错。避免这种错误的方法有两种:

通过 in 来判断 key 是否存在: ‘Thomas’ in d

通过 dict 提供的 get() 方法。如果 key 不存在,则返回 None 或自己指定的 value: d.get(‘Thomas‘) 或 d.get(‘Thomas‘, -1)

如何删除一个 key

要删除一个 key,可以用 pop(key) 方法。

list 与 dict 孰美?

和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而变慢;

需要占用大量的内存,内存浪费多。

而list相反:

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

四、set

set 也是一组 key 的集合,但不存储 value。key 不能重复,set 中没有重复的 key。

如何创建 set

要创建一个 set,需要提供一个 list 作为输入集合:

>>> s = set([1, 2, 3])>>>s

{1, 2, 3}

虽然我们传入的 list 是有序的,但 set 中只是有这些元素,并无排序。

set 会自动将重复的 key 过滤掉:

>>> s = set([1, 2, 3, 3])>>>s

{1, 2, 3}

如何将元素添加到 set 中

可以用 add(key) 方法将元素添加到 set 中。如果重复添加同一个元素,不会报错,只是没有效果。

如何删除 set 中的元素

通过 remove(key) 方法可以删除元素:

>>> s.remove(2)>>>s

{1, 3}

查漏补缺

set 就像数学上的集合,也可以做交集、并集等操作:

>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 &s2

{2, 3}>>> s1 |s2

{1, 2, 3, 4}

set 和 dict 的原理一样,也不能放入可变对象。如果无法判断两个可变对象是否相等,自然也不能保证 set 内部“不会有重复元素”。

原文:https://www.cnblogs.com/murongmochen/p/11674778.html

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值