Python3 基本数据类型
变量
Python是动态语言,一个变量可以通过赋值指向不同类型的对象。
Python中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
如果某个对象不存在任何变量对它进行引用,那么Python会对该对象进行垃圾收集处理。
变量运算示例:
>>> a=100
>>> b=100
>>> a+b
200
>>> print(a+b)
200
多个变量赋值:
Python允许同时为多个变量赋相同值。例如:
a = b = c = 1
创建一个整型对象,值为 1,从后向前赋值,三个变量都指向同一个内存地址。
也可以为多个对象指定多个变量,例如:
a, b, c = 1, 2, "runoob"
两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。
Python支持的数据类型
Number(数字)
Python 数字数据类型用于存储数值。
Python3 支持 int(整数)、float(浮点数)、bool(布尔值)、complex(复数)。
备注:复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long,Python3 整型是没有限制大小的。
内置的 type() 函数可以用来查询变量所指对象的数据类型:
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
数值的除法包含两个运算符:/ 返回一个浮点数,// 返回结果的整数部分:
>>> 9/3
3.0
>>> 5/3
1.6666666666666667
>>> 5//3
1
数学函数
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃 。使用 使用 (x>y)-(x<y) 替换。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根。 |
随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。
Python包含以下常用随机数函数:
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
String(字符串)
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
截取字符串的语法格式如下:
变量[头下标:尾下标] 截取的字符包括头下标,但不包括尾下标。
Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始:
>>> a='1234'
>>> a[0:3]
'123'
>>> a[-3:-1]
'23'
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,紧跟的数字为复制的次数:
>>> a='hello'
>>> b=' world'
>>> a+b
'hello world'
>>> a*2
'hellohello'
Python 使用反斜杠(\)作为转义字符,如果不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串(raw string):
>>> print('hello\nworld')
hello
world
>>> print(r'hello\nworld')
hello\nworld
另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """或者 '''跨越多行:
#用反斜杠(\)续行
>>> print('hello\
... world')
helloworld
#用'''...'''表示含有换行的字符串
>>> print('''hello
... world''')
hello
world
#加上r表示输出原始字符串
>>> print(r'''hello\n
... world''')
hello\n
world
>>> print('''hello\n
... world''')
hello
world
Python字符串运算符
下表实例变量a值为字符串 "Hello",b变量值为 "Python":
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | a + b 输出结果: HelloPython |
* | 重复输出字符串 | a*2 输出结果:HelloHello |
[] | 通过索引获取字符串中字符 | a[1] 输出结果 e |
[ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。 | a[1:4] 输出结果 ell |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | 'H' in a 输出结果 True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | 'M' not in a 输出结果 True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | print( r'\n' ) print( R'\n' ) |
% | 格式字符串 | 请看下一节内容。 |
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标:尾下标] 截取的元素包括头下标,但不包括尾下标
列表索引从左往右以0开始,从右往左以-1开始。
>>> t=['a','b','c']
>>> t[0:2]
['a', 'b']
>>> t[-3:]
['a', 'b', 'c']
>>> t[:]
['a', 'b', 'c']
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
>>> a=['a','b']
>>> b=['c','d']
>>> a+b
['a', 'b', 'c', 'd']
>>> a*2
['a', 'b', 'a', 'b']
与Python字符串不一样的是,列表中的元素是可以改变的:
>>>a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a [9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a [9, 2, 6]
删除列表元素
可以使用 del 语句来删除列表的的元素,如下实例:
>>> t=[1,2,3]
>>> del(t[0]) #可以带括号
>>> t
[2, 3]
>>> del t[0] #或不带括号
>>> t
[3]
嵌套列表
使用嵌套列表即在列表里创建其它列表,例如:
>>>a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'
列表函数&方法
Python列表包含以下函数:
序号 | 函数 |
---|---|
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
Python列表包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组中的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组中的元素的数据类型也可以不相同:
>>> t=('123',123)
>>> print(t)
('123', 123)
和字符串一样,元组同样可以被索引和截取,元组被截取后返回一个包含所需元素的新元组:
>>> t=('hello',123,7.89)
>>> t[0:2]
('hello', 123)
>>> t[:]
('hello', 123, 7.89)
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
>>> t=[] #构造空列表
>>> print(t)
[]
>>> t=[2,] #构造仅含有一个元素的列表,元素后面可以不带逗号
>>> t
[2]
>>> t=(2,) #构造仅含有一个元素的元组,元素后面必须要带逗号
>>> t[0]
2
>>> t=() #构造空元组
>>> t
()
Set(集合)
集合(set)是一个无序的不重复元素序列:
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'} #这个才是真正的basket引用的集合对象,而且顺序也和初始创
#建时不一样
添加元素
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
x 可以有多个,用逗号分开。
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
>>>
移除元素
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'}
我们也可以设置随机删除集合中的一个元素,语法格式如下:
s.pop()
集合内置方法完整列表
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 删除集合中的元素,该元素在指定的集合中不存在。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
字典当中的元素是通过键来存取的,而不是通过索引存取。
字典是一种映射类型,字典用"{ }"标识,它的元素是键值对,每个键值之间用冒号(:)分隔,每个键值对之间用逗号(,)分隔。创建空字典用{}。
字典中的键(key)必须使用不可变类型,例如,字符串、数字或元组。
在同一个字典中,键(key)必须是唯一的。
字典中的元素可以被修改,包括新增、删除和修改值。
访问字典里的值
把相应的键放入到方括号中,如下实例:
>>> t={'name':'xiaoming','age':18}
>>> t['name']
'xiaoming'
>>> t['age']
18
Python数据类型转换
数据类型的转换,只需要将数据类型作为函数名即可。
>>> t='123'
>>> int(t)
123
数据类型转换