Python3 基本数据类型

Python中变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型。

标准数据类型

python3中有6个标准的数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

Python3的6个数据类型中:

  • 不可变数据(3个):Number(数字),String(字符串),Tuple(元组);
  • 可变数据(3个):List(列表),Dictionary(字典),set(集合)

Number

python3支持 int,float,bool,complex(复数)

像大多数语言一样,数值类型的赋值核计算都是很直观的。内置的type()函数可以用来查询变量所指的对象类型。

还可以用isinstannce来判断

isinstance和type的区别在于:

  • type()不会认为子类是一种父类型。
  • isinstance()会认为子类是一种父类型。

type 是用于求一个未知数据类型对象,而 isinstance 是用于判断一个对象是否是已知类型。

type 不认为子类是父类的一种类型,而isinstance会认为子类是父类的一种类型。

可以用 isinstance 判断子类对象是否继承于父类,type 不行。

综合以上几点,type 与 isinstance 虽然都与数据类型相关,但两者其实用法不同,type 主要用于判断未知数据类型,isinstance 主要用于判断 A 类是否继承于 B 类

注意:

  1. python可以同时为多个变量赋值。
  2. 一个变量可以通过赋值指向不同类型的对象。
  3. 数值的除法包括两个运算符:/返回一个浮点数,//返回一个整数。
  4. 在混合计算时,python会把整型转换成为浮点数。

String

python中的字符串用单引号‘或双引号“括起来,同时使用反斜杠\转义特殊字符。

字符串的截取的语法格式如下:

1
变量[头下标:尾下标]

Python 使用反斜杠 \转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。

与c字符串不同的是,python字符串不能被改变。向一个索引位置赋值,会发生错误。

注意:

  1. 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  2. 字符串可以用+运算符链接在一起,使用*运算符重复。
  3. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  4. python中的字符串不能被改变。

List

List是python中使用最为频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中的元素可以不相同,他支持数字,字符串甚至可以包含列表。

列表是写在方括号**[]**之间,用逗号分隔开的元素列表。

1
ist = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]

与字符串不一样的是,列表中的元素是可以改变的。

注意:

  1. List写在方括号之间,用逗号分隔开。
  2. 和字符串一样,list可以被索引和切片。
  3. List可以使用+操作符进行拼接。
  4. List中的元素是可以改变的。

Python列表截取可以接受第三个参数,参数作用是截取的步长。

1
2
letters = ['r','u','n','o','o','b']
letters[1:4:2]

如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串:

1
letters[-1::-1]

Tuple

元组与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用个逗号隔开。

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

1
2
tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

一般来说,函数的返回值一般为一个。而函数返回多个值的时候,是以元组的方式返回的。

1
2
3
4
5
6
In [82]: def exm(a,b):
...: return (a,b)
...:

In [83]: type(exm(1,2))
Out[83]: tuple

但是我们要是将返回改为return [a,b]就是列表了。

1
2
3
4
5
6
7
In [91]: def exm(a,b):
...: return [a,b]
...:
...:

In [92]: type(exm(1,2))
Out[92]: list

python中的函数还可以接受可变长参数,比如以“*”开头的参数名,会将所有的参数收集到一个元组上。

1
2
3
4
5
6
7
8
In [84]: def test(*args):
...: print(args)
...: return args
...:
...: print(type(test(1,2,3,4))) #可以看见其函数的返回值是一个元组
...:
(1, 2, 3, 4)
<type 'tuple'>

注意:

  1. 与字符串一样,元组的元素不能修改。
  2. 元组也可以被索引和切片,方法一样。
  3. 注意构造包含0或者1个元素的元组的特殊语法规则。
  4. 元组也可以使用+操作符进行拼接。

Set

集合是由一个或者数个形态各异的大小整体组成的,构成集合的事物或对象称为元素或是成员。

基本功能是成员关系测试和删除重复元素。

可以使用大括号**{}或者set()**函数创建集合,注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}

print(sites) # 输出集合,重复的元素被自动去掉

# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')


# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a)

print(a - b) # a 和 b 的差集

print(a | b) # a 和 b 的并集

print(a & b) # a 和 b 的交集

print(a ^ b) # a 和 b 中不同时存在的元素

Dictionary

字典是python中另一个非常有用的内置数据类型。

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用标识**{}**,它是一个无序的 键(key):值(value)的集合。

键(key)必须使用不可变类型。

在同一个字典中,键必须是唯一的。

1
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

构造函数dict()可以直接从键值对序列中构建字典如下:

1
2
3
4
5
6
>>> dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Runoob': 1, 'Google': 2, 'Taobao': 3}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Runoob': 1, 'Google': 2, 'Taobao': 3}

**{x: x*2 for x in (2, 4, 6)}* 该代码使用的是字典推导式,更多推导式内容可以参考:Python 推导式

另外,字典类型也有一些内置的函数,例如 clear()、keys()、values() 等。

python中的字典是使用了一个称为散列表(hashtable)的算法,也就是我们说的哈希表。

注意:

  1. 字典是一种映射类型,它的元素是键值对。
  2. 字典的关键字必须为不可变类型,且不能重复。
  3. 创建空字典使用 **{}**。