目录
Python3中有6个标准的数据类型:
- 数字(Number)
- 字符串(String)
- 元组(Tuple)
- 列表(List)
- 集合(Set)
- 字典(Dictionary)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
一、数字(Number)
Python 数字数据类型用于存储数值。
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
Python 支持三种不同的数值类型:
-
整型(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。布尔(bool)是整型的子类型。
-
浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
-
复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
1.整数的不同进制
在 Python 中,可以使用多种进制来表示整数:
1) 十进制形式
我们平时常见的整数就是十进制形式,它由 0~9 共十个数字排列组合而成。
注意,使用十进制形式的整数不能以 0 作为开头,除非这个数值本身就是 0。
2) 二进制形式
由 0 和 1 两个数字组成,书写时以0b
或0B
开头。例如,101 对应十进制数是 5。
3) 八进制形式
八进制整数由 0~7 共八个数字组成,以0o
或0O
开头。注意,第一个符号是数字 0,第二个符号是大写或小写的字母 O。
在 Python 2.x 中,八进制数字还可以直接以0
(数字零)开头。
4) 十六进制形式
由 0~9 十个数字以及 A~F(或 a~f)六个字母组成,书写时以0x
或0X
开头,
实例:
#十六进制
hex1 = 0x45
hex2 = 0x4Af
print("hex1Value: ", hex1)
print("hex2Value: ", hex2)
#二进制
bin1 = 0b101
print('bin1Value: ', bin1)
bin2 = 0B110
print('bin2Value: ', bin2)
#八进制
oct1 = 0o26
print('oct1Value: ', oct1)
oct2 = 0O41
print('oct2Value: ', oct2)
运行结果:(本例的输出结果都是十进制整数。)
hex1Value: 69
hex2Value: 1199
bin1Value: 5
bin2Value: 6
oct1Value: 22
oct2Value: 33
2.Python 数字类型转换
-
int(x) 将x转换为一个整数。
-
float(x) 将x转换到一个浮点数。
-
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
-
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
以下实例将浮点数变量 a 转换为整数:
>>> a = 1.0
>>> int(a)
1
二、字符串(String)
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
创建字符串,只需要为变量赋值即可,如:Str = "hello world"
1.字符串的访问(索引和切片)
- 索引值以 0 为开始值,-1 为从末尾的开始位置。索引的用法,取单个元素时,使用字符串[索引值] ,索引值为对应元素的索引号
- 切片的语法:[起始:结束:步长] 注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。 例:
2.字符串更新
截取字符串的一部分并与其他字段拼接,如下实例:
var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'Runoob!')
运行结果
已更新字符串 : Hello Runoob!
3.字符串内置函数
4.字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
>>> print("中国的英文是%s" % ("China"))
中国的英文是China
字符串格式化符号:
格式化操作符辅助指令:
5.转义字符
在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:
三、元组(Tuple)
1.元组类型的定义
- 元组是一种序列类型,一旦创建就不能被修改
- 使用小括号()或tuple()创建,元素间使用逗号分隔
- 可以使用或不使用小括号
- 元组类型继承了序列类型的全部通用操作
- 元组操作与序列操作基本相同
2.元组的创建
创建空元组
tup1 = ()
>>> tup1 = ('Google', 'Runoob', 1997, 2000)
>>> tup2 = (1, 2, 3, 4, 5 )
>>> tup3 = "a", "b", "c", "d" # 不需要括号也可以
>>> type(tup3)
<class 'tuple'>
元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用:
>>> tup1 = (50)
>>> type(tup1) # 不加逗号,类型为整型
<class 'int'>
>>> tup1 = (50,)
>>> type(tup1) # 加上逗号,类型为元组
<class 'tuple'>
3.元组的访问
- 元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。
- 元组可以使用下标索引来访问元组中的值,如下实例:
tup1 = ('Google', 'Runoob', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) print ("tup1[0]: ", tup1[0]) print ("tup2[1:5]: ", tup2[1:5])
4.元组内置函数
- len(tuple) 计算元组元素个数
- max(tuple) 返回元组中元素最大值
- min(tuple) 返回元组中元素最小值
- tuple(iterable) 将可迭代系列转换为元组
5.元组的不可变
所谓元组的不可变指的是元组所指向的内存中的内容不可变。
>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g' # 不支持修改元素
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup) # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800 # 内存地址不一样了
从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。
四、列表(List)
1.列表类型的定义
- 列表是一种序列类型,创建后可以随意被修改
- 使用方括号[]或list()创建,元素间用逗号分隔
- 列表中各元素类型可以不同,无长度限制
- 列表操作在序列操作基础上,增加了更多的灵活性
2.列表的创建
1) 使用 [ ] 直接创建列表
使用[ ]
创建列表后,一般使用=
将它赋值给某个变量,具体格式如下:
listname = [element1 , element2 , element3 , ... , elementn]
其中,listname 表示变量名,element1 ~ elementn 表示列表元素。
例如,下面定义的列表都是合法的:
num = [1, 2, 3, 4, 5, 6, 7]
name = ["C语言中文网", "http://c.biancheng.net"]
program = ["C语言", "Python", "Java"]
另外,使用此方式创建列表时,列表中元素可以有多个,也可以一个都没有,例如:
emptylist = [ ]
这表明,emptylist 是一个空列表。
2) 使用 list() 函数创建列表
除了使用[ ]
创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。例如:
#将字符串转换成列表
list1 = list("hello")
print(list1)
#将元组转换成列表
tuple1 = ('Python', 'Java', 'C++', 'JavaScript')
list2 = list(tuple1)
print(list2)
#将字典转换成列表
dict1 = {'a':100, 'b':42, 'c':9}
list3 = list(dict1)
print(list3)
#将区间转换成列表
range1 = range(1, 6)
list4 = list(range1)
print(list4)
#创建空列表
print(list())
运行结果
['h', 'e', 'l', 'l', 'o']
['Python', 'Java', 'C++', 'JavaScript']
['a', 'b', 'c']
[1, 2, 3, 4, 5]
[]
3.列表的访问
例:
url = list("http://c.biancheng.net/shell/")
#使用索引访问列表中的某个元素
print(url[3]) #使用正数索引
print(url[-4]) #使用负数索引
#使用切片访问列表中的一组元素
print(url[9: 18]) #使用正数切片
print(url[9: 18: 3]) #指定步长
print(url[-6: -1]) #使用负数切片
结果:
p
e
['b', 'i', 'a', 'n', 'c', 'h', 'e', 'n', 'g']
['b', 'n', 'e']
['s', 'h', 'e', 'l', 'l']
4.删除列表元素
可以使用 del 语句来删除列表的的元素,如下实例:
list = ['Google', 'Runoob', 1997, 2000]
print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)
结果:
原始列表 : ['Google', 'Runoob', 1997, 2000] 删除第三个元素 : ['Google', 'Runoob', 2000]
5.列表函数&方法
函数:
方法:
五、集合(Set)
1.集合类型的定义
- 集合类型与数学中的集合概念一致
- 集合元素之间无序,每个元素唯一,不存在相同元素
- 集合元素不可更改,不能是可变数据类型,是不可变数据类型
- 集合是多个元素的无序组合
2.集合的建立
-
集合用大括号{}表示 ,元素间用逗号分隔
-
建立集合类型用{}或set()
-
建立空集合类型,必须使用set() 注:为什么不能用{}来创建空集合,因为{}是用来创建一个空字典。
创建格式:
parame = {value01,value02,...} 或者 set(value)
示例:
A={"python",123} #使用{}建立集合,得到{123,'python'}
B=set("pypy123") #使用set()建立集合,得到{'p','y','1','2','3'}
C={"world",123,"world",123} #得到{'world',123}
3.集合间操作及操作符
例:
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
4.集合的处理方法
- 添加元素
s.add( x ) x 可以有多个,用逗号分开。
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
2.移除元素
s.remove( x ) 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.remove("Taobao") >>> print(thisset) {'Google', 'Runoob'} >>> thisset.remove("Facebook") # 不存在会发生错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Facebook' >>>
s.discard( x ) 如果元素不存在,不会发生错误。>>> thisset = set(("Google", "Runoob", "Taobao")) >>> thisset.discard("Facebook") # 不存在不会发生错误 >>> print(thisset) {'Taobao', 'Google', 'Runoob'}
3.将集合清空以及计算集合元素个数
len(s) s.clear()
操作函数或方法 | 描述 |
---|---|
s.add(x) | 如果x不在集合s中,将x增加到s中 |
s.discard(x) | 移除s中元素x,如果x不在集合s中,不报错 |
s.remove(x) | 移除s中元素x,如果x不在集合s中,产生keyerror异常 |
s.clear() | 移除s中所有元素 |
s.pop() | 随机返回s中的一个元素,更新s,若s为空产生keyerror异常 |
s.copy() | 返回集合s的一个副本 |
len(s) | 返回集合s的元素个数 |
x in s | 判断s中元素x,x在集合s中,返回True,否则返回False |
x not in s | 判断s中元素x,x不在集合s中,返回True,否则返回False |
set(x) | 将其他类型变量x转变为集合类型 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在 |
intersection() | 返回集合的交集 |
intersection_update | 返回集合的交集 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
issubset() | 判断指定集合是否为该方法参数集合的子集 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
symmetric_difference() | 返回两个集合中不重复的元素集合 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
union() | 返回两个集合的并集 |
s.update(x) | 给集合添加元素 |
六、字典(Dictionary)
1.字典类型的定义
理解“映射”:映射是一种键(索引)和值(数据)的对应
- 字典类型是映射的体现
- 字典是键值对的集合,键值对之间无序
- 采用大括号{}和dict()创建,键值对用冒号:表示
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
2.字典的访问
例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
结果:
dict['Name']: Runoob dict['Age']: 7
3.字典的修改
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新 Age
dict['School'] = "菜鸟教程" # 添加信息
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
结果:
dict['Age']: 8 dict['School']: 菜鸟教程