2022年 11月 3日

深入Python3(一) 内置数据类型

文章目录

  • 0.摘要
  • 1.布尔类型
  • 2.数值类型
  • 3.列表
    • 3.1创建列表
    • 3.2列表切片
    • 3.3向列表中新增项
    • 3.4在列表中检索值
    • 3.5从列表中删除元素
    • 3.6布尔上下文环境中的列表
  • 4.元组
    • 4.1布尔上下文环境中的元组
    • 4.2同时赋多个值
  • 5.集合
    • 5.1创建集合
    • 5.2修改集合
    • 5.3从集合中删除元素
    • 5.4常见集合操作
    • 5.5布尔上下文环境中的集合
  • 6.字典
    • 6.1创建字典
    • 6.2修改字典
    • 6.3混合值字典
    • 6.4布尔上下文环境中的字典
  • 7.None

0.摘要

  在

P

y

t

h

o

n

Python

Python中, 每个值都有一种数据类型,但您并不需要声明变量的数据类型。那该方式是如何运作的呢?

P

y

t

h

o

n

Python

Python根据每个变量的初始赋值情况分析其类型,并在内部对其进行跟踪。我们将选择其中的一些进行介绍。

1.布尔类型

  布尔类型或为真或为假。

P

y

t

h

o

n

Python

Python有两个被巧妙地命名为

T

r

u

e

True

True

F

a

l

s

e

False

False的常量,可用于对布尔类型的直接赋值。表达式也可以计算为布尔类型的值。在某些地方(如

i

f

if

if语句),

P

y

t

h

o

n

Python

Python所预期的就是一个可计算出布尔类型值的表达式。这些地方称为布尔类型上下文环境。事实上,可在布尔类型上下文环境中使用任何表达式,而

P

y

t

h

o

n

Python

Python将试图判断其真值。在布尔类型上下文环境中,不同的数据类型对于何值为真、何值为假有着不同的规则。

2.数值类型

  

P

y

t

h

o

n

Python

Python同时支持

I

n

t

e

g

e

r

Integer

Integer[整型] 和

F

l

o

a

t

i

n

g

P

o

i

n

t

Floating Point

FloatingPoint[浮点型] 数值。无任何类型声明可用于区分;

P

y

t

h

o

n

Python

Python通过是否有小数点来分辨它们。
  可通过

i

n

t

(

x

x

)

f

l

o

a

t

(

x

x

)

int(xx)、float(xx)

int(xx)float(xx)显示的将

x

x

xx

xx转换为整数、浮点数。整数可以任意大,但是浮点数有精度限制。
  常见的运算符就不多说了,值得一提的是

P

y

t

h

o

n

Python

Python中的

/

/

/运算符执行的是浮点数除法;

/

/

//

//运算符执行的是地板除,但是它不总是返回整数,当分子或分母为浮点数时,它依然会返回浮点数,比如

7.0

/

/

3

7.0//3

7.0//3会返回

2.0

2.0

2.0

**

运算符是计算幂的,比如

11

2

=

121

11**2=121

112=121
  在布尔类型上下文环境中,非零整数为真,非

0.0

0.0

0.0浮点数为真。不过在使用浮点数时一定要注意误差。

3.列表

  列表是

P

y

t

h

o

n

Python

Python的主力数据类型。像使用数组一样使用列表,不过列表可以容纳任何对象,并在加入新元素时进行动态扩展。

3.1创建列表

在这里插入图片描述
  列表的索引从

0

0

0开始,负数索引相当于从列表尾部向前计数访问元素,以上面的图片为例,列表长度为

5

5

5,那么

[

3

]

=

[

5

3

]

=

[

2

]

[-3]=[5-3]=[2]

[3]=[53]=[2]

3.2列表切片

在这里插入图片描述
  通过指定两个索引值,可以从列表中获取称作“切片”的某个部分,返回值是一个新列表。第一个索引值默认为

0

0

0,第二个索引值默认为列表的长度,左闭右开。

3.3向列表中新增项

在这里插入图片描述
  

+

+

+运算符包含两个步骤 — 连接然后赋值 — 当处理大型列表时,该操作可能(暂时)消耗大量内存。
  

a

p

p

e

n

d

(

)

append()

append()方法向列表的尾部添加一个新的元素。
  列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。

e

x

t

e

n

d

(

)

extend()

extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
  

i

n

s

e

r

t

(

)

insert()

insert()方法将单个元素插入到列表中。第一个参数是列表中将被顶离原位的第一个元素的位置索引。

3.4在列表中检索值

在这里插入图片描述
  

c

o

u

n

t

(

)

count()

count()方法返回了列表中某个特定值出现的次数。
  如果你想知道的是某个值是否出现在列表中,

i

n

in

in运算符将会比使用

c

o

u

n

t

(

)

count()

count()方法要略快一些。它总是返回

T

r

u

e

True

True

F

a

l

s

e

False

False,而不是告诉你该值出现在什么位置。
  如果想知道某个值在列表中的精确位置(第一次出现的位置),可调用

i

n

d

e

x

(

)

index()

index()方法。后两个参数用来指定搜索范围欸,左闭右开默认为整个列表。
  如果在列表中没有找到该值,

i

n

d

e

x

(

)

index()

index()方法将会引发一个错误。

3.5从列表中删除元素

在这里插入图片描述
  可使用

d

e

l

del

del语句从列表中删除某个特定元素,后面的元素将各自向前移动一位。
在这里插入图片描述
  

r

e

m

o

v

e

(

)

remove()

remove()方法接受一个

v

a

l

u

e

value

value参数,并删除列表中的第一个

v

a

l

u

e

value

value;如果找不到将会引发一个错误。你还可以发现,这个方法没有返回值。
在这里插入图片描述
  

p

o

p

(

)

pop()

pop()方法接收一个

i

n

d

e

x

index

index参数,它将删除列表

i

n

d

e

x

index

index位置的元素并返回它的值;默认删除列表的最后一个元素。一个空列表调用这个方法或者

i

n

d

e

x

index

index越界都会引发错误。

3.6布尔上下文环境中的列表

在这里插入图片描述
  非空列表为真。

4.元组

在这里插入图片描述
  这里打错了,应该是元组。
  元组和列表的主要区别是元组不能进行修改。用技术术语来说,元组是不可变更的。从实践的角度来说,没有可用于修改元组的方法。

a

p

p

e

n

d

(

)

e

x

t

e

n

d

(

)

i

n

s

e

r

t

(

)

r

e

m

o

v

e

(

)

append()、 extend()、 insert()、remove()

append()extend()insert()remove()

p

o

p

(

)

pop()

pop()这些方法元组都没有。可以对元组进行切片操作(因为该方法创建一个新的元组),可以检查元组是否包含了特定的值(因为该操作不修改元组),还可以……就那么多了。
  元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。
  对不需要改变的数据进行“写保护”将使得代码更加安全。
  一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。

4.1布尔上下文环境中的元组

在这里插入图片描述
  非空元组为真,注意

a

=

(

)

a=()

a=()是一个空的元组;

a

=

(

1

,

)

a=(1,)

a=(1,)才是仅包含一个元素的元组,这个逗号至关重要。悄悄告诉你,其实圆括号也可以省去,

a

=

1

,

2

,

3

a=1,2,3

a=1,2,3也是一个元组。

4.2同时赋多个值

在这里插入图片描述

5.集合

  集合

s

e

t

set

set是装有独特值的无序“袋子”。一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算。

5.1创建集合

在这里插入图片描述
  要创建多值集合,请将值用逗号分开,并用花括号将所有值包裹起来。
在这里插入图片描述
  注意集合是无序的。
在这里插入图片描述
  创建空集合请使用

s

e

t

(

)

set()

set();一对不包含任何值的花括号将创建一个空字典。

5.2修改集合

在这里插入图片描述
  

a

d

d

(

)

add()

add()方法接受单个可以是任何数据类型的参数,并将该值添加到集合之中。
在这里插入图片描述
  

u

p

d

a

t

e

(

)

update()

update()方法仅接受一个集合作为参数,并将其所有成员添加到初始列表中。其行为方式就像是对参数集合中的每个成员调用

a

d

d

(

)

add()

add()方法。
  实际上,可以带任何数量的参数调用

u

p

d

a

t

e

(

)

update()

update()方法。如果调用时传递了多个集合, 它会将每个集合中的每个成员添加到初始的集合当中(丢弃重复值)。
  

u

p

d

a

t

e

(

)

update()

update()方法还可接受一些其它数据类型的对象作为参数,包括列表。

5.3从集合中删除元素

在这里插入图片描述
  

d

i

s

c

a

r

d

(

)

r

e

m

o

v

e

(

)

discard()、remove()

discard()remove()都接受一个单值作为参数,并从集合中删除该值。区别是当这个值不存在时,前者不抛出错误,后者会抛出错误。
在这里插入图片描述

  

p

o

p

(

)

pop()

pop()方法从集合中删除某个值,并返回该值。然而,由于集合是无序的,并没有“最后一个”值的概念,因此无法控制删除的是哪一个值。它基本上是随机的。对空集合调用该方法会引发错误。
  

c

l

e

a

r

(

)

clear()

clear()方法删除集合中所有的值,留下一个空集合。它等价于

a

_

s

e

t

=

s

e

t

(

)

a\_set = set()

a_set=set(),该语句创建一个新的空集合,并用之覆盖

a

_

s

e

t

a\_set

a_set变量的之前的值。

5.4常见集合操作

在这里插入图片描述
  要检测某值是否是集合的成员,可使用

i

n

in

in运算符。
  

u

n

i

o

n

(

)

union()

union()方法返回一个新集合,其中装着在两个集合中出现的元素。
  

i

n

t

e

r

s

e

c

t

i

o

n

(

)

intersection()

intersection()方法返回一个新集合,其中装着同时在两个集合中出现的所有元素。
  

d

i

f

f

e

r

e

n

c

e

(

)

difference()

difference()方法返回的新集合中,装着所有在

a

_

s

e

t

a\_set

a_set出现但未在

b

_

s

e

t

b\_set

b_set中的元素。
  

s

y

m

m

e

t

r

i

c

_

d

i

f

f

e

r

e

n

c

e

(

)

symmetric\_difference()

symmetric_difference()方法返回一个新集合,其中装着所有只在其中一个集合中出现的元素。
  除了求差操作是不对称的,其它操作都是对称的。
在这里插入图片描述
  

a

_

s

e

t

a\_set

a_set

b

_

s

e

t

b\_set

b_set的子集— 所有

a

_

s

e

t

a\_set

a_set的成员均为

b

_

s

e

t

b\_set

b_set的成员;反过来可以说

b

b

b

a

a

a的超集。

5.5布尔上下文环境中的集合

在这里插入图片描述
  非空集合为真。

6.字典

  字典是键值对的无序集合。向字典添加一个键的同时,必须为该键增添一个值。(之后可随时修改该值)

P

y

t

h

o

n

Python

Python的字典为通过键获取值进行了优化,而不是反过来。

6.1创建字典

在这里插入图片描述
  可以通过

d

i

c

t

[

x

]

dict[x]

dict[x]访问字典中键

x

x

x对应的值,但是当

x

x

x不存在时,会抛出一个错误。

6.2修改字典

在这里插入图片描述
  在字典中不允许有重复的键。对现有的键赋值将会覆盖旧值。
  可随时添加新的键值对。该语法与修改现有值相同。

6.3混合值字典

  字典并非只能用于字符串。字典的值可以是任何数据类型,包括整数、布尔值、任何对象,甚至是其它的字典。而且就算在同一字典中,所有的值也无须是同一类型,您可根据需要混合匹配。字典的键要严格得多,可以是字符串、整数和其它一些类型。在同一字典中也可混合、匹配使用不同数据类型的键。
在这里插入图片描述
  类似列表和集合,

l

e

n

(

)

len()

len()函数将返回字典中键的数量。
  而且像列表和集合一样,可使用

i

n

in

in运算符以测试某个特定的键是否在字典中。

6.4布尔上下文环境中的字典

在这里插入图片描述

  非空字典为真。

7.None

  

N

o

n

e

None

None

P

y

t

h

o

n

Python

Python的一个特殊常量。它是一个空值。

N

o

n

e

None

None

F

a

l

s

e

False

False不同,

N

o

n

e

None

None不是

0

0

0

N

o

n

e

None

None 不是空字符串;将

N

o

n

e

None

None 与任何非

N

o

n

e

None

None 的东西进行比较将总是返回

F

a

l

s

e

False

False
  

N

o

n

e

None

None是唯一的空值。它有着自己的数据类型(

N

o

n

e

T

y

p

e

NoneType

NoneType)。可将

N

o

n

e

None

None赋值给任何变量,但不能创建其它

N

o

n

e

T

y

p

e

NoneType

NoneType对象。所有值为

N

o

n

e

None

None变量是相等的。
在这里插入图片描述
  在布尔上下文环境中,

N

o

n

e

None

None为假值,

n

o

t

 

N

o

n

e

not\ None

not None为真值。