根据廖雪峰的Python3教程整理记录
输入输出
input(), print()
Python3中的print要加上括号,成了一个函数
数据类型和变量
- 字符串
字符串使用单引号或者双引号基本没区别。如果字符串不转义可以使用r”将字符串圈起来
- 布尔值
True False
大小写
- 空值
Python中的空值是None
Python是动态语言,因此可给一个变量反复赋值不同类型的值
浮点除/,整数除(地板除)//,求余%
字符串和编码
这一节大部分对我来说就是比较新的知识了,之前做项目使用MFC大都直接用CString类型 ,没有过多关注过编码。
编码
ASCII编码是1个字节,Unicode编码通常是2个字节,因此Unicode所能表示的字符比ASCII要多
ASCII转化为Unicode,在前边补8个0就可以。但对于ASCII可以表示的字符使用Unicode表示,就造成了浪费
因此可变长编码的UTF-8编码就出现了,ASCII自然可以被看做UTF-8的一部分,UTF-8兼容性很高
计算机内存中统一使用Unicode,需要保存到硬盘或者传输时,转换为UTF-8。很多网页也是用UTF-8
Python中的字符串
单字符使用ord()获取整数编码,chr()把编码转化为字符
str.endcode('格式')
可以将str编码为指定格式len()计算字符数。如果是ASCII或者UTF-8这样的bytes,计算字节数
通常在Python源代码前加上以下两句,第一句是在Linux/OS X中执行用的,Windows可以忽略;第二句是让Python解释器按utf-8编码读取源代码。因此在编辑代码的时候,所使用的文本编辑器要是utf-8 without bom的
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
list和tuple
Python基础的重头戏之一来啦
list
list和c++中的stl::vector很像,笔者有一定的stl::vector基础,因此这里只记录新内容
list中的元素类型可以不同:
L = ['Apple', 123, True]
空list:
L = []
tuple
元组tuple一旦初始化不可修改,自然也没有
append()
、insert()
方法。为了保证数据安全性,能用tuple尽量用tuple空tuple:
t = ()
歧义情况
t = (1)
,这种情况下()被Python认为是是小括号,因此t就是int 1,不是tuple。如果要定义只有一个元素的tuple,要加一个逗号t = (1,)
,Python输出时也会如此显示以免你误解tuple只是指向不变。如果内部元素有可变元素如list,则可以改变元素内容
条件判断
Python的条件语法和C++有所不同。特别低,Python极度强调缩进,缩进表示着代码的嵌套关系
if 条件1:
执行1
elif 条件2:
执行2
else:
执行3
循环
for
for x in list:#如果list太长可以用range(n)生成0~n-1的整数序列。不过如果要输出range(n)的话需要list(range(n))
do something
while用法不再赘述
dict和set
Python基础的又一个重头戏来啦
dict
查找速度非常快 d = {'key1': value1, 'key2': value2}
。也可以通过key放入value d['key1'] = value1
可以对一个key重复赋值,不过新值的会把旧值冲掉。dict内部元素的顺序和放入顺序无关
判断key是否在dict中,可以使用’key’ in d可以返回布尔值,使用d.get('value', n)
返回不在的指定值,缺省None
删除可以使用d.pop('key')
,对应的value自然也会删除掉
dict的key是不可变对象,因此list不能作为key
set
类似集合概念,无重复,无顺序,可以做交(&)并(|)运算。初始化要用set()
,参数只能是一个list,输出会是{key1, key2, ...}
,s.add(key)添加元素,s.remove(key)
删除元素