Python¶
Python语言是一种解释型、面向对象、动态数据类型的高级程序设计语言,如今已成为绝大部分数据分析师的首选数据分析语言。其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。
版本¶
本教程所有代码采用 Python3.6 进行编写,在 Python 可通过以下命令查看版本:
[1]:
import sys
sys.version
[1]:
'3.7.1 | packaged by conda-forge | (default, Feb 26 2019, 04:48:14) \n[GCC 7.3.0]'
在 Jupyter Notebook 中通过!python --version
命令查看版本。
[2]:
!python --version
Python 3.7.1
语法¶
缩进¶
锁紧是表达代码间包含和层次关系的唯一手段,在 Python 中通过 4 个空格或 1 个 TAB 键来表示。
注释¶
注释是不被程序执行的辅助性说明信息。在 Python 中单注释分为单行和多行,单行注释以#
开头,其后内容为注释;多行注释以'''
开头和结尾,中间内容为注释。
[3]:
# 这是一个单行注释
'''
这是一个多行注释
这是一个多行注释
'''
print('注释')
注释
变量¶
变量是用来保存和表示数据的占位符号。在 Python 中通过等号=
用向变量赋值或修改值。 变量名是大小写字母、数字、下划线_
和汉字等字符的组合,对大小写敏感,首字母不能是数字,也不能与保留字相同。
[4]:
# 向变量x赋值为1
x = 1
print('x =',x)
# 修改变量x的赋值为2
x = 2
print('x =',x)
x = 1
x = 2
保留字¶
保留字是被编程语言内部定义并保留使用的标识符。在 Python 中有 33 个保留字,保留字是编程语言的基本单词,对大小写敏感。
and |
as |
assert |
break |
class |
continue |
def |
elif |
else |
except |
finally |
for |
from |
if |
import |
in |
is |
lambda |
not |
or |
pass |
raise |
return |
try |
while |
with |
yield |
del |
global |
nonlocal |
True |
False |
None |
操作符¶
操作符是完成运算的一种符号体系
运算操作符¶
操作符 |
描述 |
---|---|
x + y |
加法运算 |
x - y |
减法运算 |
x * y |
乘法运算 |
x / y |
除法运算 |
x // y |
整除运算 |
x % y |
取模(余数)运算 |
|
负数运算 |
x ** y |
幂运算,y 为小数时为开方运算 |
赋值操作符¶
操作符 |
描述 |
---|---|
x += y |
即 x = x + y |
x -= y |
即 x = x - y |
x *= y |
即 x = x * y |
x /= y |
即 x = x / y |
x //= y |
即 x = x // y |
x %= y |
即 x = x % y |
x **= y |
即 x = x ** y |
数据类型¶
数据类型是供计算机程序理解的数据形式,在 Python 中数据类型被分为基本数据类型和复合数据类型。
基本数据类型:包括整数、浮点数、复数、布尔数值和空值。
复合数据类型:包括字符串、列表、元组、字典和集合。
整数 (int)¶
Python 中的整数与数学中整数的概念一致,可正可负,没有取值范围限制,在 Python 中有 4 种表达形式。
表达形式 |
格式 |
---|---|
十进制 |
-100,0,100 |
二进制 |
以0b或0B开头:0b01,-0B01 |
八进制 |
以0o或0O开头:0o17,-0O17 |
十六进制 |
以0x或0X开头:0x0f, -0X0f |
整数虽然有 4 种表达形式,但输出格式都是十进制。
[5]:
print("二进制数 0b01 的输出格式是:",0b01)
print("八进制数 0o17 的输出格式是:",0o17)
print("十六进制数 0x0f 的输出格式是:",0x0f)
二进制数 0b01 的输出格式是: 1
八进制数 0o17 的输出格式是: 15
十六进制数 0x0f 的输出格式是: 15
浮点数(float)¶
Python 中的浮点数与数学中实数的概念一致,指带有小数点及小数的数字。浮点数取值范围和小数精度都存在限制,但常规计算可忽略。取值范围数量级约\(-10^{308}\)至\(10^{308}\),精度数量级\(10^{16}\)。
在 Python 中浮点数有两种表达形式:一种用小数点+数字形式表示;一种用科学计数法表示,使用字母e或E作为幂的符号,以10为基数,\(<a>e<b>\)表示\(a*10^b\)
[6]:
print('浮点数 110e-3 值为:',110e-3)
print('浮点数 5.2E2 值为:',5.2E2)
浮点数 110e-3 值为: 0.11
浮点数 5.2E2 值为: 520.0
复数(plural)¶
Python 中的复数与数学中复数的概念一致,记 a+b*j 为复数,其中 a 是实部,b 是虚部。
[7]:
x = 1 + 2j
print('复数 1 + 2j 的实部是:', x.real)
print('复数 1 + 2j 的虚部是:', x.imag)
复数 1 + 2j 的实部是: 1.0
复数 1 + 2j 的虚部是: 2.0
序列(sequence)¶
序列是具有先后关系的一组元素,各元素类型可以不同。元素间通过序号引导,通过下标访问序列的特定元素。字符串、列表和元组类型都属于序列类型。
序号分为两种:正向递增序号和正向递减序号,对应关系如下表:
正向递增序号 |
0 |
1 |
2 |
… |
n-1 |
序列 |
1 |
2 |
3 |
… |
n |
反向递减序号 |
-n |
-n+1 |
-n+2 |
… |
-1 |
利用序号可以对序列进行索引和切片操作:
索引指通过序号选取序列中特定元素的操作,通过
sequence[index]
使用;切片指从序列获取多个元素的操作,通过
sequence[start_index:end_index:step]
使用,start_index
表示开始索引位置,默认为0
:end_index
表示结束索引位置,默认为n-1
:step
表示步长,默认为1
。切片操作前闭后开,不包括sequence[end_index]
。
[10]:
x = [1, 2, 3, 4, 5]
print('x[1] = ',x[1])
print('x[-1] =',x[-1])
print('x[1:4:2] =',x[1:4:2])
print('x[::-1] =',x[::-1])
x[1] = 2
x[-1] = 5
x[1:4:2] = [2, 4]
x[::-1] = [5, 4, 3, 2, 1]
字符串、列表和元组类型作为序列的子类,都拥有序列的通用函数和方法:
函数和方法 |
描述 |
---|---|
len(x) |
返回序列 x 的长度 |
min(x) |
返回序列 x 的最小元素 |
max(x) |
返回序列 x 的最大元素 |
x.index(a)或x.index(a,i,j) |
返回序列 x 从 i 开始到 j 位置中第一次出现元素 a 的位置 |
x.count(a) |
返回序列 x 中出现元素 a 的总次数 |
字符串¶
字符串是由 0 个或多个字符组成的有序字符序列,由一对单引号''
或一对双引号""
表示。
[11]:
print('我是一个字符串')
print("我是另一个字符串")
print("'我还是一个字符串'")
我是一个字符串
我是另一个字符串
'我还是一个字符串'
如果现在字符串中输入一个单引号'
或双引号"
,需要通过转义符\
表达
[12]:
print('这是一个单引号(\')')
print('这是一个双引号(\")')
这是一个单引号(')
这是一个双引号(")
转义符和字母进行组合可以表达出一些字符串无法表达的含义
\b
: 后退\n
: 换行,即光标移动到下行行首\r
: 回车,即贯标移动到本行行首
字符串继承序列类型的函数和方法,但也具有独有的函数和方法:
函数和方法 |
描述 |
---|---|
str(x) |
返回任意类型 |
hex(x) 或 oct(x) |
返回整数 |
chr(x) |
返回 Unicode 编码 |
ord(x) |
返回字符 |
str.lower() 或 str.upper() |
返回字符串的副本,全部字符小写/大写,如 |
str.split(sep=None) |
返回一个列表,由 |
str.count(sub) |
返回子串 |
str.replace(old, new) |
返回字符串 |
列表(list)¶
列表是一种序列类型,创建后可以随意被修改。使用方括号[]
或list()
创建,元素间用逗号,
分隔。列表中各元素类型可以不同,无长度限制。
[13]:
x = ['abc', 123]
print(x)
y = list('123')
print(y)
['abc', 123]
['1', '2', '3']
列表继承序列类型的函数和方法,但也具有独有的函数和方法:
函数和方法 |
描述 |
---|---|
list.append(x) |
在 |
list.clear() |
删除 |
list.copy() |
复制 |
list.inerst(i,x) |
在 |
list.pop(i) |
返回 |
list.remove(x) |
删除 |
list.reverse() |
颠倒 |
元组(tuple)¶
元组是一种序列类型,一旦创建就不能被修。使用小括号()
或tuple()
创建,元素间用逗号,
分隔。可以使用或不使用小括号
[14]:
x = 'abc',123
x
[14]:
('abc', 123)
元组继承了序列类型的全部通用操作,因为创建后不能修改,因此没有特殊操作。
字典(dict)¶
字典是一种储存键值对的数据类型,键值对之间无序。通过大括号{}
和dict()
创建,键值对用冒号:
表示。在字典变量中,通过键获得值。
键(keys)可以看做索引的扩展,值(values)储存数据。
[15]:
x = {'a':1, 'b':2}
print('x =',x)
print("x['a'] =",x['a'])
x = {'a': 1, 'b': 2}
x['a'] = 1
字典类型操作函数和方法
函数和方法 |
描述 |
---|---|
dict.keys() |
返回 |
dict.values() |
返回 |
dict.items() |
返回 |
dict.get(k, x) |
若键 |
dict.pop(k, x) |
若键 |
dict.popitem() |
从 |
dict.clear() |
删除 |
len(dict) |
返回 |
集合(set)¶
Python 的集合类型与数学中的集合概念一致,是多个元素的无序组合。元素与元素间无序,不存在相同元素。集合中的元素不可更改,不能使可变数据类型。
集合通过大括号{}
或set()
创建,元素间用逗号,
分割,创建空集合必须使用set()
方法。
[16]:
x = {'a', 1, 10, 'a'}
x
[16]:
{1, 10, 'a'}