整数

包括正整数、负整数和零,是没有小数点的数字。

Python 可以处理任意大小的整数,例如:1,100,-8080,0,等等。

浮点数

指带小数的数字

需要注意精度丢失问题

因为计算机对浮点数的表达本身是不精确的。保存在计算机中的是二进制数,二进制对有些数字不能准确表达,只能非常接近这个数。

字符串

字符串英文 string ,是 python 中随处可见的数据类型,字符串的识别也非常的简单,就是用「引号」括起来的。

引号包括单引号 ' ' ,双引号 " " 和 三引号 ''' ''' ,比如 'abc' ,"123" 等等。

转义字符:

比如单引号,你可以使用 \' 来表示,双引号可以使用 \" 来表示。

注意,这里的是反斜杠 \, 不是斜杆 / 。

字符串编码问题

通常在文件开头写上这两行:

1
2
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉 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
2
3
4
5
L = [1, 2, 'xcyd', '四号字符', 88.88]

# 输出
>>> print(L)
>>> [1, 2, 'xcyd', '四号字符', 88.88]

获取列表元素

  1. 通过索引来获取指定元素,索引从0开始,L[0] 即为 1
  2. 通过区间获取多个元素,L[0:2] 即为 从第 0 个开始取,取到第 2 个,但是不包含第 2 个。
    1
    2
    3
    4
    5
    L[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
2
3
4
5
6
7
8
dict = {key1 : value1, key2 : value2 }
d = {'a' : 1, 'b' : [1,2,3], 2 : '二'}

# 通过Key来访问
>>> d[2]
'二'
>>> d['b']
[1, 2, 3]

注意:键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的。

增删改dict

  • 新增一个键值对 d[‘c’] = 100
  • 修改 d[‘c’] = ‘下次一定’
  • 删除 通过del语句删除某个或整个字典 del d[‘a’] / del d;通过clear()方法清除字典的所有元素 d.clear()

dict(字典)注意事项

  1. 不允许一个键创建两次的,但是在创建 dict (字典)的时候如果出现了一个键值赋予了两次,会以最后一次赋予的值为准
  2. 键必须不可变,可是键可以用数字,字符串或元组充当,但是就是不能使用列表
  3. 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
2
3
s = set([123,456,789])
print(s)
>>> {456, 123, 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 中自动被过滤的