更多课程 选择中心


Python培训

400-111-8989

再次学习python标准数据类型

  • 发布:Python培训
  • 来源:程序小员
  • 时间:2019-12-19 14:21

标准数据类型

number, string, list, tuple, set, dictionary.

注意:当Python定义一个变量并赋初值的时候,这个变量就被创建出来,并且此处所说的类型不是变量的类型,变量不存在类型,就只是变量,这里所说的类型是创建的对象的类型,例如:

number = 100 # 此处创建了一个int类实例对象,用变量number指向它

其中的number数据类型,在Python3中包括 int, float, bool, complex(复数)

复数的创建方式是调用complex函数

例如:

cpx = complex(5, 6)

此处 cpx 的值为复数 (5+6j)

标准数据类型中, 存在4个容器类型,分别是 set(集合), list(列表), tuple(元组), dictionary(字典)

关于四种容器类型,在这里只是概述了:

列表:

定义:

使用 [ ] 或者list() 例: a = [ ] / a = list()

增长: 使用append(要添加到末尾的元素) ,insert(插入的位置,插入的元素), extend(要组合的新列表)

缩减: pop(默认最后一个元素删除,也可输入索引),remove(根据值删除)

转置: reverse() 列表头尾反转重新排列

排序: sort()

查找: index(value) 返回value第一次出现的索引,count(value) 返回value出现的次数, in 关键字,返回bool值 例如: a = [10, 20],那么 10 in a 会返回True

计算: sum(), 计算列表中所有数据的总和, max(), min() 分别返回列表中元素最大,最小值

合并: 加法 + 运算,合并两个列表,返回新的列表, 乘法 * 复制 n 次,生成新列表

大小: len(), 返回列表长度

切片: list[start : end : sted] start 和 end 切割的区间,左开右闭, sted表示每次切割的步长

元组:

元组操作与列表类似,但是,元组是不可变类型(关于不可变类型,下文会有讲)所以列表的 增长,缩减,排序,转置函数都不能使用, 只能使用 + 和 * 合并或复制元组,切片功能也可以使用。这些能使用的功能最终都会返回一个新的元组!!原来的元组本身并没有发生变化

字典:

定义: 使用 {} 或者 dict() ,例如:a = {} / a = dict()

key 与 value : 列表与元组通过索引index来寻找值value, 而字典利用关键字 key 来寻找相对应的value,与c++数据结构中的哈希表类似,也与现实生活中的字典类似,注意: 字典的key值只能是不可变类型,而value可以是任意类型,甚至本身可以是一个字典。

例子: bands = {“Marxes”: [“Moe”, “Curly”], “KK”: [True, “moon”] },前面一个是字符串+列表组合, 后面一个也是字符串+列表组合,但是后面的列表里面是bool类型和字符串类型的组合

字典的增长/更新方法:

1.直接添加,例如: student = {} , student[“name”] = “Tom”, student[“age”] = 20, 此处若是"age"存在,则更新,若是不存在,则是添加,“name” 同理。

2. 在上一个例子 student 的基础上, bar = {“course”: [“数学”, “英语”]}, 创建一个新的字典,然后 student.update(bar),则是将字典bar合并进入student, 也可以直接 student.update(friends = [“Mike”, “Alice”])。

字典的删除方法:

1.pop(key) 删除指定标签和它的数据,把它的value值返回出来。

2.popitem() 删除随机标签和它的数据,并把它以元组方式返回出来。

3.clear() 清空字典中的所有元素

字典长度: len() # 所有的容器都可以使用len()来获得长度

访问字典: keys() 返回字典中的所有关键字,即标签, values() 返回字典中的所有value值, items() 将每个数据项表示为二元元组, 返回所有的数据项

在字典下查找: in 操作,查找字典中是否含有某个关键字, 返回值是bool类型, in 与value 配合 “Tom” in student.values() 即可查找字典中的value值。 除此之外,in 操作还可以与keys() , items() 配合。

集合:

事先声明: 集合与字典类似,如果说字典是key值与value值一对一对应的,那么集合就是只存在key值,注意: 这里的key依然是不可变类型,集合是一个标签带,并且这个标签带里的标签不允许重复,会自动去重。

创建集合: 使用{}或者set(), 并且,set()函数可以从其他序列容器转换成集合,例如,元组,列表,字符串,放到set()的()中会转换成集合。

增长集合: 使用add()增加一个元素,或者使用update() 批量增加元素

缩减集合:

1.remove() / discard() 两者都是删除指定元素,不同之处在于当要删除的元素不存在时, remove()会报错而discard()不会。

2.pop() 这个就有点古怪,它会删除任意一个元素并且返回值,就是说,先斩后奏。

3.clear() 清除所有的元素

集合大小: 依然用len() 来获取,你记好了嘛?

访问元素: in 操作对集合同样适用喔,可以判断某个元素是否在集合内, 或者适用迭代来实现访问所有元素, for item in myset: 实现。

集合运算: 敲黑板!这部分很厉害哦, 众所周知我们数学上的集合可以进行各种运算,比如并,交等,在python中的set同样可以哦!

运算操作    示例

              aset | bset

              aset & bset

              aset - bset

关系判定: 当然集合的关系判定也是少不了的啦,一起来看看吧。

关系            示例

子集            aset <= bset

真子集         aset < bset

超集            aset >= bset

真超集         aset > bset

相等            aset == bset

什么时候用集合呢?

1.快速去除重复项:假如一个列表中有大量的重复,我们可以把列表放到集合里去,可以高效去重

2.判断元素是否在一组数据中,即使用 in 操作,in操作在集合中拥有比在列表中更好的性能。

好啦,接下来我们谈谈可变类型和不可变类型。

可变类型:列表,字典,集合

不可变类型:整型,浮点型,字符串,逻辑值,元组

根据我个人的理解,可变类型就是,数据本身变了,不可变类型就是,数据本身不会变,如果你对它进行操作,也只是在它的基础上产生一个新的值再赋值给你的变量。

举栗子:

a = “I’m handsome”

a = a + “I think so”

最终a的值会变成两个之和,但是!!!注意了,"I’m handsome"这个字符串本身并没有变,你只是把一个值和它加起来又赋值到了a身上而已

再来:

a = [1, 2, 3]

a.append(4)

这个时候,你就要注意,[1, 2, 3]这个列表本身已经变了,等于[1, 2, 3]它本身已经不存在了,变成了新的东西了。

如果你理解了,那么这里面还有一个问题你必须知道,这也是很可能会犯的一个小错误,错误很微小,但是结果很致命!

很多人喜欢把Python里的变量比作标签,是贴在某个数据上的,这种比喻主要用来针对不可变类型,很形象生动,这里有个简单的问题问大家:

定义 num1 = 20, num2 = num1

如果我们对num1进行操作, num1 += 10

此时, num2 的值是什么?答案是,20,几乎不用想

这个时候你必须要注意了!! 我们说过数是不可变类型,那么对于可变类型呢?

我们定义 lt1 = [10, 20] lt2 = lt1

我们再对lt1进行操作 lt1.append(30)

这个时候,我再问你, lt2 的值是什么?可能我这样的态度已经让你察觉到了

没错,这个时候,lt2的值就不是原来的 [10, 20]了,它也随lt1变化了!

现在,lt2的值,同样变成了[10, 20, 30]!

在python中,如果几个变量同时对应同一个可变类型的对象,那么任意一个变量对这个对象进行操作之后,其他所有变量的值同时进行改变!牢记这一点!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:Python面向对象编程基础知识
下一篇:Python面向对象编程简单讲解

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省