《Dive into python3》:chapter2 native datatypes

Dive in

在Python中,每个值都有一个datatype,但是您不需要声明变量的数据类型。这是如何工作的呢?根据每个变量的原始赋值,Python会找出它是什么类型,并在内部保留它的踪迹。

python重要的原生数据类型主要如下:

  1. Booleans 非真即假
  2. Numbers can be integers (1 and 2), floats (1.1 and 1.2), fractions (1/2 and 2/3), or even complex numbers.
  3. Strings are sequences of Unicode characters, e.g. an html document.
  4. Bytes and byte arrayse.g. a jpeg image file.
  5. Lists are ordered sequences of values.
  6. Tuples 元组是有序的,不可变的值序列
  7. Sets 集合是无序的一些值
  8. Dictionaries 字典是未排序的键-值对包

string和bytes将单独作为章节讲解,先讲其他的。


2.2 Booleans

You can use virtually any expression in a boolean context.


2.3 Numbers

①python通过小数点存在与否来区分整型与浮点型。

②isinstance()返回一个对象是否是类的实例或子类的实例,可用来判断值或变量是否为给定类型

③int + float = float;int+int = int;float + float = float

④可以将浮点数强制转换为整型,反之亦然

⑤常见的数字操作

操作规则:1、‘//’结果是约等于且向下取整,‘/’所得结果均为浮点数

。。。从2.3.3到2.5.3因为在保存修改时出现bug,未保存成功,又重来,所以要记得随时保存。。。

⑦Fractions(分数)

引入fractions模块后操作

⑧引入math模块,可以做基本的三角函数操作

⑨布尔环境下的数字,0为假,非0即真

2.4 Lists(列表)

列表是python中很重要的数据类型。看到列表可能会联想到数组“提前声明数组大小,只能包含相同数据类型的元素”,但是列表要比数组厉害多了。在python中变量可以以任何形式命名,python在内部跟踪其数据类型,不仅仅是可以作为数组一样使用,一个很好的类比是Array List类,可以存储各种类型的对象,并且在添加新项目时动态扩展。

在列表中有以下几个操作:对列表进行切片,添加条目,查找值,删除条目

①创建列表:列表是一组有序集合,保持原有顺序,用方括号将元素括起来,元素之间用逗号隔开。非空列表索引号从0开始,负数索引从非空列表的最后一项开始计数,最后一项起始索引号为-1.

② 切片列表:lists[0:2]意思是对列表lists切片,从索引号0开始包括lists[0],到索引号2结束,不包括lists[2]

③添加条目

>>> a_list = ['a']

>>> a_list = a_list + [2.0, 3]                                                    "连接两个列表的元素,创建一个新列,这实际是两步,连接之后分配                                                                                                          给现有列表a_list,这会暂时消耗大量内存"

>>> a_list ['a', 2.0, 3]

>>> a_list.append(True)                                                         “追加元素”

>>> a_list ['a', 2.0, 3, True]

>>> a_list.extend(['four', 'Ω'])                                                   “追加元素”

>>> a_list ['a', 2.0, 3, True, 'four', 'Ω']

>>> a_list.insert(0, 'Ω')                                                             “在指定位置添加元素”

>>> a_list ['Ω', 'a', 2.0, 3, True, 'four', 'Ω']

append()与extend()的区别:

append()将括号里元素作为一个条目加入列表,即使元素是一个列表,那么添加的列表在新表里是列表类型

expend()将括号里的元素一个一个加进目标列表,如果是列表,那么列表里的每个条目在目标列表中单独存在,各占一个位置。

列表是变化的,除了增删查改的直观性变化外,我还发现,当列表A中含有列表B时,如果列表B发生变化,那么列表A中的列表B也随之改变,因为他们本来就是一个,可以看下面的例子:

a_list的构成:

对lists进行操作:

④查找:count()、in、index()

⑤删除:del、remove()

⑥删除:pop(),如果括号里为空,则删除非空列表的最后一项,如果不为空,则删除对应索引项,返回值均为删除项。

⑦布尔环境中的列表:空表为False,非空为true,不论表中元素真假。


2.5 Tuples(元组)

①创建元组

元组一旦创建,任何方式都无法改变它。列表是可变的。

元组的元素用圆括号括起来,元素间用逗号隔开。

元组对值得操作只可以查找,不可以删除,添加。

元组的优点是更快更安全,使用元组,对数据进行了写保护。

元组与列表利用内置函数tuple()与list()可以互相转换:

①布尔环境中的元组

如果元组只有单一元素,那么要以逗号结尾以标志定义的是一个元组。

在布尔环境中,空元组为假,非空元组为真。

②可以同时给多个元素分别赋值:

这个特性很有用,可以联合range()函数做很多事情,如日历里的星期模块:

range()函数返回的是一个迭代器,不同于列表和元组,以后会学到。

2.6 sets(集合)

集合是由单个值组成的无序的包,一个集合可以包含任何固定数据类型的值,两个集合可以求并集、交集、差集。

下面说的是创建、修改、删除集合中的元素,基本的集合操作以及在布尔环境下的集合。

由于历史原因,用花括号括起来的空集合并不是空集合,而是一个空字典:

集合的修改操作有两个函数:add() 和 update(),add()一次添加一个元素,不会添加已存在的元素,update()可以一次添加多个元素。

有三种方式从集合中删除元素,discard() ,remove(),pop().他们有细微的差别:discard删除不存在的元素时,无操作不汇报异常,但是remove会,pop()括号里为空时,删除的元素是任意的,集合是无序的。

python的集合支持常见的集合间操作,union()、intersection() 、difference()、symmetric_difference()。比较包含关系:issubset()、issuperset()。

布尔环境中集合:空集合为假,非空为真。

2.7 字典

字典是无序集合的键-值对,优化索引。

①创建字典

②修改字典:可以添加键-值对,也可以更改某一个已存在的键的值

③字典中的键和值可以是不同的数据类型,一个字典中的键可以混合匹配数据类型。

④空字典为假,非空为真

2.8 None

这是一个特殊的常量,值为null,他不是空的字符串,不是0,与任何其他值比较,返回值均为False。not None为真。

猜你喜欢

转载自blog.csdn.net/qq_38576427/article/details/81632974
今日推荐