Python 中的变量不需要声明。每个变量在使用前必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量本身是没有类型的,我们所说的 “类型” 是变量所指内存中的对象的类型。

Number

Python 支持三种不同的数值类型:

  • 整型 (int) : 通常被称为整型或者整数,是正数或者负数,不带小数点。在 Python3 中,整型没有大小限制,所以也可以用来表示 long 类型。

    bool 是整型的子类型。

  • 浮点型 (float) : 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示

  • 复数 (complex) : 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

整型类型转换

  • int(x): 将变量 x 转换为整型,如果转换失败将会抛出异常

    1. >>> a = '1'
    2. >>> int(a)
    3. >>> 1
    1. >>> a = 'x'
    2. >>> int(a)
    3. Traceback (most recent call last):
    4. File "<pyshell#1>", line 1, in <module>
    5. int(a)
    6. ValueError: invalid literal for int() with base 10: 'x'
  • float(x): 将变量 x 转换为浮点型,如果转换失败将会抛出异常

    1. >>> a = '1.2'
    2. >>> float(a)
    3. 1.2
    1. >>> a = '1/2'
    2. >>> float(a)
    3. Traceback (most recent call last):
    4. File "<pyshell#3>", line 1, in <module>
    5. float(a)
    6. ValueError: could not convert string to float: '1/2'
  • complex(x): 将x转换到一个复数,实数部分为 x,虚数部分为 0。

    1. >>> a = a
    2. >>> complex(a)
    3. (1.2+0j)
  • complex(x, y): 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

    1. >>> complex(1,1)
    2. (1+1j)

数字运算

和其他语言一样,通过 +、-、* 、/ 来进行四则运算。

  1. >>> 1 + 1
  2. 2
  3. >>> 1 - 1
  4. 0
  5. >>> 1 * 1
  6. 1
  7. >>> 1 / 1
  8. 1.0

注意:

  1. 在不同的机器上,浮点运算的结果可能不同;
  2. 在整数除法中,除法 / 总是返回浮点数,如果想得到整数的结果,可以使用 // 运算符;
  3. 运算符 // 得到的并不一定是整数类型的数,它与分子和分母有关系;
  4. 通过运算符 ** 可以进行幂运算;
  1. >>> 3//2
  2. 1
  3. >>> 3//2.0
  4. 1.0
  5. >>> 3 ** 2
  6. 9
  7. >>> 3 ** 3
  8. 27

String

字符串是 Python 中最常用的数据类型。我们可以使用引号( ''"" )来创建字符串。

  1. >>> a = 'hello world'
  2. >>> type(a)
  3. <class 'str'>

如果需要访问字符串中的元素,可以通过 [] 来截取,语法如下:

  1. 变量[首下标:尾下表]

例如:

  1. >>> a = 'hello world'
  2. >>> type(a)
  3. <class 'str'>
  4. >>> a[0]
  5. 'h'
  6. >>> a[0:2]
  7. 'he'
  8. >>> a[1:3]
  9. 'el'

Python 字符串运算符

操作符 描述 示例
+ 字符串连接 a + b
输出 ab
* 重复输出字符串 a*2
输出 aa
[] 通过索引访问字符串 abcdefg[2]
,输出 c
[:] 截取字符串中的一部分,遵循左闭右开原则 abcdefg[2:4]
,输出 cd
in 成员运算符,如果字符串中包含指定字符串,返回 true 'a' in 'abc'
,输出 true
not in 成员运算符,如果字符串中不包含指定字符串,返回 true 'a' not in 'abc'
,输出 false
r/R 按原始字符串输出 r'\\n'
,输出 ‘\n’
% 格式化字符串 'a %s, a %d'%('xx', 5)
,输出’a xx, a 5’
‘’’ 可以运行一个字符串跨行,并且字符串中可以包含换行符、运算符

Python 字符串格式化

符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

常用内置函数

函数 描述 示例
capitalize() 将字符串第一个字母转换为大小,其他为小写。 ‘abCde’.capitalize()
count(sub, start= 0,end=len(string)) 返回子字符串在指定字符串中出现的次数。
startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
endswith(suffix[, start[, end]]) 判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
find(str, beg=0, end=len(string)) 检测字符串中是否包含子字符串 str ,如果不包含,返回 -1。
rfind(str, beg=0 end=len(string)) 返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
index(str, beg=0, end=len(string)) 检测字符串中是否包含子字符串 str ,如果不包含, 抛出异常。
rindex(str, beg=0 end=len(string)) 返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常。
isdigit() 检测字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。
len() 返回对象(字符、列表、元组等)长度或项目个数。
lower() 转换字符串中所有大写字符为小写。
upper() 将字符串中的小写字母转为大写字母。
lstrip([chars]) 截掉字符串左边的空格或指定字符(默认为空格)。
rstrip([chars]) 删除 string 字符串末尾的指定字符(默认为空格)。
strip([chars]) 移除字符串头尾指定的字符(默认为空格)或字符序列,该方法不能删除中间部分的字符串。
replace(old, new[, max]) 把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
join(sequence) 将序列中的元素以指定的字符连接生成一个新的字符串。

List

  1. 序列是 Python 中最基本的数据结构。
  2. 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。
  3. Python 有 6 个序列的内置类型,但最常见的是列表和元组。
  4. 列表都可以进行的操作包括索引,切片,加,乘,检查成员。
  5. 此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。
  6. 列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。
  7. 列表的数据项不需要具有相同的类型。
  8. 像字符串一样,可以通过列表索引访问列表中的元素,并可通过索引进行截取、组合等操作。

访问列表中的值

  1. >>> name = ['张三丰', '李自成', '张无忌', '陈圆圆']
  2. >>> print(name)
  3. ['张三丰', '李自成', '张无忌', '陈圆圆']
  4. >>> name[1]
  5. '李自成'
  6. >>> name[-1]
  7. '陈圆圆'
  8. >>> name[2:3]
  9. ['张无忌']
  10. >>> name[1:-2]
  11. ['李自成']

列表常用方法

  • len()
    返回列表元素个数。

    1. >>> name = ['张三丰', '张翠山', '张无忌', '陈圆圆', '赵敏', '东坡肉']
    2. >>> len(name)
    3. 6
  • max()
    返回列表元素的最大值。

    1. >>> num = [1,3,2,4,0]
    2. >>> max(num)
    3. 4
  • min()
    返回列表元素的最小值

    1. >>> num = [1,3,2,4,0]
    2. >>> min(num)
    3. 0
  • list()
    讲元组转换为列表。

    1. >>> a = (1,2,3)
    2. >>> list(a)
    3. [1, 2, 3]
  • list.append(obj)
    在列表的末尾添加元素。

    1. >>> num = [1,3,2,4,0]
    2. >>> num.append(['a','c'])
    3. >>> num
    4. [1, 3, 2, 4, 0, ['a', 'c']]
  • list.count(obj)
    统计某个元素在列表中出现的次数。

    1. [1, 3, 2, 4, 0, ['a', 'c']]
    2. >>> num.count(1)
    3. 1
    4. >>> num.count(5)
    5. 0
  • list.extend(seq)
    在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。

    1. >>> num = [2,3,4]
    2. >>> num.extend((6,7,8))
    3. >>> num
    4. [2, 3, 4, 6, 7, 8]
  • list.index(obj)
    从列表中找出某个值第一个匹配项的索引位置。

    1. >>> num = [2,3,4,5,2,3,5]
    2. >>> num.index(3)
    3. 1
  • list.insert(index, obj)
    将对象插入列表中指定位置。

    1. >>> num = [2,3,4,5,2,3,5]
    2. >>> num.insert(2, ['a','b'])
    3. >>> num
    4. [2, 3, ['a', 'b'], 4, 5, 2, 3, 5]
  • list.pop(index = -1)
    移除列表中的元素,默认最后一个元素,并且返回该元素的值。

    1. >>> num = [1,2,3,4,5]
    2. >>> num.pop()
    3. 5
    4. >>> num
    5. [1, 2, 3, 4]
    6. >>> num.pop(2)
    7. 3
    8. >>> num
    9. [1, 2, 4]
  • list.remove(obj)
    移除列表中某个值的第一个匹配项

    1. >>> num = [1,2,1,2,3,4,5]
    2. >>> num.remove(1)
    3. >>> num
    4. [2, 1, 2, 3, 4, 5]
    5. >>> num.remove(4)
    6. >>> num
    7. [2, 1, 2, 3, 5]
  • list.reverse()
    反向列表中的元素。

    1. >>> num = [1,2,3,4,5]
    2. >>> num.reverse()
    3. >>> num
    4. [5, 4, 3, 2, 1]
  • list.sort(key=None, reverse=False)
    对原列表进行排序。key 主要是用来进行比较的元素,reverse 排序规则,reverse = True 降序, reverse = False 升序(默认)。

    1. >>> a = [1,4,2,10,3,5]
    2. >>> a.sort()
    3. >>> a
    4. [1, 2, 3, 4, 5, 10]
  • list.clear()
    清空列表。

    1. >>> num = [1,2,3,4,5]
    2. >>> num.clear()
    3. >>> num
    4. []
  • list.copy()
    复制列表。类似于 a[:]

    1. >>> num = [1,2,3,4,5]
    2. >>> a = num.copy()
    3. >>> a
    4. [1, 2, 3, 4, 5]

Tuple

元组与列表类似,用 () 表示,与列表不同的是:元组的元素不能被修改。

  1. 元组只包含一个元素时,需要在元素后面追加逗号,否则 () 会被当做运算符使用;
  2. 元素与字符串类似,下表索引从 0 开始,可以进行截取、组合等;
  3. 元组中的元素值是不能被修改的,但我们可以对元组进行链接组合;
  4. 元组中的元素不允许删除,但可以通过 del 删除整个元组;
  5. 元组可以通过 +* 进行组合和复制运算;运算后会生成一个新元组;
  6. 元组是不可变的,也就是元组指向的内存中的内容不可变。

内置函数

方法 描述 实例
len(tuple) 计算元组的个数
max(tuple) 返回元组中元素的最大值
min(tuple) 返回元组中元素的最小值
tuple(obj) 将可迭代系列转换为元组

Dictionary

字典是 Python 中另一种可变容器模型,可以存储任意类型对象。字典的每个键值对用 : 分割,每个对之间用 , 隔开,整个字典则包含在 {} 中,如:{ d = key1 : value1, key2 : value2, key3 : value3 }

字典中的键必须是唯一的(如果同一个键出现多次,则只会保留最后一个键值对),且类型不可变(可以是字符串、数字或元组类型),但值则可以重复,也可以是任意类型。

访问字典中的值

可通过把键放入到 [] 中,获取指定键的值,如果键不存在,则会抛出异常:

  1. >>> dic = {'name':'张三', 'age':10, 'sex':'男'}
  2. >>> dic['name']
  3. '张三'
  4. >>> dic['s']
  5. Traceback (most recent call last):
  6. File "<pyshell#6>", line 1, in <module>
  7. dic['s']
  8. KeyError: 's'

修改字典

  • 向字典中添加元素
  1. >>> dic = {'name':'张三', 'age':10, 'sex':'男'}
  2. >>> dic['class'] = '三年级'
  3. >>> dic
  4. {'name': '张三', 'age': 10, 'sex': '男', 'class': '三年级'}
  • 修改字典中的元素
  1. >>> dic = {'name':'张三', 'age':10, 'sex':'男'}
  2. >>> dic['class'] = '三年级'
  3. >>> dic
  4. {'name': '张三', 'age': 10, 'sex': '男', 'class': '三年级'}
  5. >>> dic['class'] = '二年级'
  6. >>> dic
  7. {'name': '张三', 'age': 10, 'sex': '男', 'class': '二年级'}
  • 删除字典中的元素

可以通过 del 来进行删除操作。语法为 del set[key],如果删除一个不存在的 key,则会抛出异常。

  1. >>> dic = {'name':'张三', 'age':3, 'sex':'男'}
  2. >>> del dic['sex']
  3. >>> dic
  4. {'name': '张三', 'age': 3}
  5. >>> del dic['age']
  6. >>> dic
  7. {'name': '张三'}
  8. >>> del dic['age']
  9. Traceback (most recent call last):
  10. File "<pyshell#5>", line 1, in <module>
  11. del dic['age']
  12. KeyError: 'age'
  13. >>> del dic['name']
  14. >>> dic
  15. {}

字典常用操作方法及函数

方法 描述
len(dic) 获取字典元素的总个数
str(dic) 输出字典
type(obj) 输出变量类型,如果是字典类型,则输出 class [dict]
dic.clear() 清空字典内的所有元素
dic.copy() 返回一个字典的浅复制
dic.get('key', default=None) 返回字典中指定 key
的值
key in dic 如果 key
在字典中,返回 true
,反之返回 false
dic.items() 以列表返回字典的视图对象
dic.keys() 以列表返回字典中所有 key
的视图对象
dic.values() 以列表返回字典中所有值的视图对象
dic.setdefault('key', default=None) 和方法 get
类似。如果 key
存在,则直接返回 key
值;如果不存在,则会向字典中添加 key
并设置一个给定的值或默认值,并返回结果
dic.update(dic2) 把字典 2 更新到字典 1 里。可以理解为将字典 2 追加到字典 1 的末尾
dic.pop(key, default=None) 删除字典给定键 key
所对应的值,返回值为被删除的值。如果 key
值不存在,在没有给 default
值的情况下,会抛出异常
dic.popitem() 返回并删除字典中的最后一对键和值,返回类型为 tuple

Set

集合是一个无序的不重复元素序列。可以使用 {} 或者 set() 函数创建一个集合。但创建一个空集合需要使用 set() 函数而不是 {},因为 {} 用来创建的是空字典。

集合的基本操作

  • 添加元素

语法格式为 s.add(x)。将元素 x添加至集合,如果元素存在,则不进行任何操作。另一种方式为 s.update(x)x 可以是列表、元组、字典等,且可以一次添加多个,多个用 , 隔开。

  1. >>> s = {'张三丰', '张无忌','张翠山'}
  2. >>> s.add('赵敏')
  3. >>> s
  4. {'赵敏', '张无忌', '张三丰', '张翠山'}
  5. >>> s.add('张三丰')
  6. >>> s
  7. {'赵敏', '张无忌', '张三丰', '张翠山'}
  8. >>> a = ('金毛', '哈士奇', '拉布拉多')
  9. >>> s.update(a)
  10. >>> s
  11. {'哈士奇', '赵敏', '金毛', '张无忌', '张三丰', '张翠山', '拉布拉多'}
  • 移除元素

s.remove(x):将元素 x 从集合中移除,如果元素不存在,则抛出异常。
s.discard(x):将元素 x 从集合中移除,如果元素不存在,不会发生错。
s.pop():随机移除集合中的元素,并返回该元素。

  1. >>> s = {'哈士奇', '赵敏', '金毛', '张无忌', '张三丰', '张翠山', '拉布拉多'}
  2. >>> s.remove('x')
  3. Traceback (most recent call last):
  4. File "<pyshell#8>", line 1, in <module>
  5. s.remove('x')
  6. KeyError: 'x'
  7. >>> s.discard('x')
  8. >>> s
  9. {'哈士奇', '赵敏', '金毛', '张无忌', '张三丰', '张翠山', '拉布拉多'}
  10. >>> a = s.pop()
  11. >>> a
  12. '哈士奇'

集合常用方法

方法 描述
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
issubset() 判断指定集合是否为该方法参数集合的子集
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
union() 返回两个集合的并集
update() 为集合添加元素