Python数据类型及转换包括集合
整数
包括正整数、负整数和零,是没有小数点的数字。
Python 可以处理任意大小的整数,例如:1
,100
,-8080
,0
,等等。
浮点数
指带小数的数字
需要注意精度丢失问题
因为计算机对浮点数的表达本身是不精确的。保存在计算机中的是二进制数,二进制对有些数字不能准确表达,只能非常接近这个数。
字符串
字符串英文 string ,是 python 中随处可见的数据类型,字符串的识别也非常的简单,就是用「引号」括起来的。
引号包括单引号 ' '
,双引号 " "
和 三引号 ''' '''
,比如 'abc'
,"123"
等等。
转义字符:
比如单引号,你可以使用 \'
来表示,双引号可以使用 \"
来表示。
注意,这里的是反斜杠 \
, 不是斜杆 /
。
字符串编码问题
通常在文件开头写上这两行:
1 | #!/usr/bin/env python3 |
第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 可执行程序,Windows 系统会忽略这个注释;
第二行注释是为了告诉 Python 解释器,按照 UTF-8 编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
申明了 UTF-8 编码并不意味着你的 .py 文件就是 UTF-8 编码的,必须并且要确保文本编辑器正在使用 UTF-8 without BOM 编码
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有 True
、 False
两种值,要么是 True
,要么是 False
,在 Python 中,可以直接用 True、False 表示布尔值(请注意大小写),也可以通过布尔运算计算出来。
布尔值可以用 and
、or
和 not
运算。
and
运算是与运算,只有所有都为 True,and 运算结果才是 True。
or
运算是或运算,只要其中有一个为 True,or 运算结果就是 True。
not
运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。
空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
变量
变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
多个变量赋值
Python 允许同时为多个变量赋值。例如:
1 | a = b = c = 1 |
以上实例,创建一个整型对象,值为 1,三个变量被分配到相同的内存空间上。
当然也可以为多个对象指定多个变量。例如:
1 | a, b, c = 1, 2, "下次一定" |
代表 a为1、b为2、c为‘下次一定’
基本数据类型转换
方法 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效 Python 表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为 Unicode 字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
注:在 Python 3 里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
List(列表)
列表就是用[]
包起来多个元素构成的List,元素之间用逗号分隔,每个元素的数据类型可以不同
1 | L = [1, 2, 'xcyd', '四号字符', 88.88] |
获取列表元素
- 通过索引来获取指定元素,索引从0开始,L[0] 即为 1
- 通过区间获取多个元素,L[0:2] 即为 从第 0 个开始取,取到第 2 个,但是不包含第 2 个。
1
2
3
4
5L[0:2] = [1,2]
L[1:3] = [2,'xcyd']
L[:2] = [1,2]
L[2:] = ['xcyd', '四号字符', 88.88]
L[:] = [1, 2, 'xcyd', '四号字符', 88.88]
增删改列表元素
- 使用
append()
方法直接添加 L.append(6) - 修改指向索引的元素 L[2] = 3
- 使用
del
语句来删除元素 del L[4]
List(列表)运算符
列表对 +
和 *
的操作符与字符串相似。+
号用于组合列表,*
号用于重复列表。
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 计算元素个数 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
[‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | 复制 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print x, | 1 2 3 | 迭代 |
List(列表)函数&方法
函数&方法 | 描述 |
---|---|
len(list) | 列表元素个数 |
max(list) | 返回列表元素最大值 |
min(list) | 返回列表元素最小值 |
list(seq) | 将元组转换为列表 |
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop(obj=list[-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中的一个元素(参数是列表中元素),并且不返回任何值 |
list.reverse() | 反向列表中元素 |
list.sort([func]) | 对原列表进行排序 |
tuple(元组)
tuple 和 List 非常类似,都是有序列表;但是 tuple 一旦初始化就不能修改。
元组(tuple) 不可变是指当你创建了 tuple 时候,它就不能改变了,也就是说它也没有 append(),insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值。
因为 tuple 是不可变的,所以代码更安全,所以建议能用 tuple 代替 list 就尽量用 tuple
元组下标索引也是从 0 开始,元组(tuple)可以使用下标索引来访问元组中的值。
增删改tuple
- 声明一个 t = (1,2,3) 即为一个元组
元组只包含一个元素时,需要在元素后面添加逗号 t = (1,) - 修改指的是操作元组内的元素,如list 实现修改,并不是修改元组本身
- 使用
del
语句来删除整个元组 del t
tuple(元组)运算符
与字符串一样,元组之间可以使用 +
号和 *
号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
(‘Hi!’,) * 4 | (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print(x) | 1 2 3 | 迭代 |
元组内置函数
方法 | 描述 |
---|---|
len(tuple) | 计算元组元素个数 |
max(tuple) | 返回元组中元素最大值 |
min(tuple) | 返回元组中元素最小值 |
tuple(seq) | 将列表转换为元组 |
dict(字典)
字典是一种可变容器模型,可以存储任意类型对象
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1 | dict = {key1 : value1, key2 : value2 } |
注意:键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的。
增删改dict
- 新增一个键值对 d[‘c’] = 100
- 修改 d[‘c’] = ‘下次一定’
- 删除 通过
del
语句删除某个或整个字典 del d[‘a’] / del d;通过clear()
方法清除字典的所有元素 d.clear()
dict(字典)注意事项
- 不允许一个键创建两次的,但是在创建 dict (字典)的时候如果出现了一个键值赋予了两次,会以最后一次赋予的值为准
- 键必须不可变,可是键可以用数字,字符串或元组充当,但是就是不能使用列表
- dict 内部存放的顺序和 key 放入的顺序是没有任何关系
和 list 比较,dict 有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢
- 需要占用大量的内存,内存浪费多
而list相反: - 查找和插入的时间随着元素的增加而增加
- 占用空间小,浪费内存很少
dict(字典)的函数和方法
方法和函数 | 描述 |
---|---|
len(dict) | 计算字典元素个数 |
str(dict) | 输出字典可打印的字符串表示 |
type(variable) | 返回输入的变量类型,如果变量是字典就返回字典类型 |
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.values() | 以列表返回字典中的所有值 |
popitem() | 随机返回并删除字典中的一对键和值 |
dict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
set
Set是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素。
创建一个set 需要提供一个list作为输入集合 set(list)
1 | s = set([123,456,789]) |
增删set
- 通过 add(key) 方法可以添加元素到 set 中,可以重复添加,但不会有效果
- 通过 remove(key) 方法可以删除 set 中的元素
set的运用
因为 set 是一个无序不重复元素集,因此,两个 set 可以做数学意义上的 union(并集), intersection(交集), difference(差集) 等操作。
- 交集(求两个set中相同的元素)
set1 & set2
- 并集(合并两个set,并消除相同的元素)
set1 | set2
- 差集(求set1或者set2的差集)
set1 - set2
或者set2 - set1
总结
- tuple (元组) 使用小括号
- list (列表) 使用方括号
- dict (字典) 使用的是大括号
- dict 也是无序的,只不过 dict 保存的是 key-value 键值对值,有重复的 key ,会被后面的 key-value 值覆盖的;而 set 可以理解为只保存 key 值,重复元素在 set 中自动被过滤的