本文是 Python 机器学习基础系列文章的第一篇——Python 篇。
Python
任何一门编程语言,入门学习的基础知识包括:数据类型、控制流、函数、模块化、类,以及一些常用的零碎语法。Python 亦不例外。
数据类型
基本数据类型
包括布尔型(bool)、整型(int)、长整型(long)、浮点型(float)、复数(complex)五种。
- 内置常量:
False,True,None,NotImplemented,Ellipsis,__debug__
布尔型(bool):只有两个值
True和False,每个 Python 对象都天生具有布尔值,None,False,0,0L,0.0,0.0+0.0j,'',[],(),{}值为False,自定义类在方法__nonzero__()或__len__()中返回布尔值,此外其他对象的布尔值都为True,在数值运算中True和False值为1和0,布尔操作包括and, or, not, !=, is, is not整型(int):等价于 C 语言中的
long类型,与系统能表示的最大整型一致,包括十进制、八进制(数字0开头)、十六进制(0x或0X开头),可通过bin,oct,hex转换进制,可进行/,//,**等运算长整型(long):是整型的超集,可以表示无限大的整数,在整数后加
L或l来表示如a = 999 ** 8,pow(2L, 5L)等浮点型(float):等价于 C 中的
double,其精度信息和内部表示可以从sys.float_info中获得,可以用十进制或科学计数法(1e-2等)表示复数(complex):
c = 08.333-1.47j,c.real,c.imag,c.conjugate(),abs(c)
容器
容器是数据的集合。Python 的容器,除字符串(string)外,主要包括四种:元组(tuple),列表(list),字典(dict)和集合(set)。其中,字典和集合是无序容器,而元组、列表和字符串都是有序容器,支持索引(index)和切片(slicing)操作。此外,字符串、元组和集合是不可变容器,而列表和字典是可变容器。不可变容器通常比可变容器(如 list)更为高效。
下面介绍这五种容器:
字符串(str):使用单引号(
'hello')、双引号("hello")或三引号('''hello''')定义。三引号可定义多行字符串。包含startswith等方法。元组(tuple):圆括号与逗号分隔定义(也可以不带括号),如
t = (0, "two", 3.0, "four", (5,6))。必须在定义时初始化且内容和长度不可变。0 个元素的元组这么定义a = (),1 个元素的元组这么定义a = (2 ,),元素可以是不同类型。tuple 也常用来打包一组变量如t = (i, s, f),ii, ss, ff = t。print函数%后的部分其实就是元组,如print '%s is %d years old' % (name, age)。列表(list):方括号与逗号分隔定义,如
l = [1, (2,3), "hello"]。也可以通过list函数来构造,此时需要传入一个元组或字符串,如l = list((1,2,3)), a = list("hello")。list 与 tuple 的区别在于其内容和长短可变,通过append来添加元素,通过del命令删除,如del l[0]。list 包含append,sort,pop,count,reverse等成员函数。字典(dict):花括号与逗号分隔来定义,如
d = { 'name': 'John', 'age': 18, 'feat': (1,3,'tall')},每个字典项用冒号隔开 key 与 value。可用索引操作符[]来寻址一个键,或者对其赋值,也可用del d['key']将某项删除。集合(set):集合是无序不重复元素集,通过
set()函数来定义,传入一个字符串、元组、列表或字典,如s = set([1, 2, "hello"]),传入字符串时构建不重复字符集合,传入字典时默认用 keys 构建集合。集合支持并集(|)、交集(&)、差集(-)、对称差集(^)运算符,包含add,update,remove,issubset,isuperset,copy,clear等子函数。
索引与切片
索引(index):序列容器(tuple, list, string, unicoe, frozenset)都可以通过索引操作符
[]来存取元素。索引从 0 开始,也可以是负数,表示倒数第几个元素。如t[0], t[-1], t[-2]分别表示第一个、最后一个与倒数第二个元素。切片(slice):切片是同时取容器内某个索引范围的多个元素。形式为
t[start:end:step],注意end是结束位置索引 + 1,如t[0:-3:2]。可以省略三个值里的一个或多个,如a[2:7],l[0::2],t[:-1]等。连接:序列容器(string, tuple, list)的加法(
+)表示序列的连接而非容器求和。如a = (1, 2, 3) + (4, 5, 6)则a的值为(1, 2, 3, 4, 5, 6)。序列容器的乘法(*,只能乘以非负整数)表示重复多次。此外,可以用extend成员函数来连接两个序列容器。
其他语法
强制类型转换(工厂函数)
如 bool(5.0), int(5.0), complex(1, 2.5), float(5), long(5.0), str(1.24)
自动类型转换
- 操作数有一个是复数,另一个也被转成复数
- 否则,有一个是浮点数,另一个也被转换成浮点数
- 否则,如果有一个是长整数,另一个也被转换成长整数
- 否则,两者必然都是整型,无需转换
coerce(x, y)函数:将变量x和y

本文是 Python 机器学习基础系列的第一部分,涵盖了 Python 的数据类型,包括基本数据类型(如布尔、整型、浮点型、复数)和容器(如元组、列表、字典、集合)。讨论了索引与切片操作,并介绍了其他语法,如强制类型转换和辅助函数。还涉及表达式与控制流,包括运算符、条件语句和循环。
最低0.47元/天 解锁文章
1599

被折叠的 条评论
为什么被折叠?



