数据类型
整数
- 0x表示16进制
- 整数除法
- 浮点数就是小数
字符串
- 关于转义
1
2
3
4
5
6
7
8
9
10
11
12
13'I\'m \"OK\"!' # 相当于 I'm "OK"
# \n表示换行
print('\\\n\\')
# \
#
# \
print('\\\t\\')
# \ \
print(r'\\\t\\'')
# \\\t\\ - 用
\n
写在一行不好阅读,为了简化,Python允许用'''...'''
格式来表示多行内容
布尔值
只有True
和False
两种布尔值
and
运算,都为True才为Trueor
运算,有True就为Truenot
运算, 非运算
空值
None
表示空值,None
不能理解为0
,0
有意义,而None
是空值。
变量
必须以英文、数字和_组合,且不能是数字开头
- 变量本身类型不固定的语言称为==动态语言==
- 在定义变量时指定的变量类型,称为==静态语言==
1
2
3
4
5
6
7// 例如
a = 1; // 动态语言
a = "ABC";
int b = 123;
b = "ABC"; //错误常量
常量就是不能变的量,在Python中全部用大写的变量名表示常量但事实上,PI也是一个变量,只是大家约定俗成将PI视为常量,如果你一定要改变他的值,也不是不可以1
PI = 3.14159265359
Python的字符串和编码
Python提供了
- ord()函数获取字符的整数表示
- chr()函数把编码转化为对应的字符
1
2
3
4
5
6
7
8
9>>> ord("A")
65
>>> ord("中")
20013
>>> chr(66)
'B'
>>> chr(25591)
'文'
Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干字节。
如果在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
1 | x = b'ABC' // bytes类型的数据用带`b`前缀的单引号或者双引号表示 |
以Unicode表示的str
通过encode()
方法可以编码为指定的bytes
(类似转码)
1 | >>> 'ABC'.encode('ascii') |
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes
,要把bytes
变为str
。需要用decode()
方法。(类似解码)
1 | >>> b'ABC'.decode('ascii') |
- len()方法可以计算
str
的字符数,如果换成bytes
,len()
函数就计算字节数1
2
3
4
5
6>>> len(b'ABC') // 英文字符占用一个字节
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8')) //中文字符经过转码一般会占用3个字节
6
格式化输出字符串
1 | >>> 'Hello, %s' % 'world' |
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
list
一种有序集合,可随时添加和删除其中得元素
- append(elem) 向list中追加元素到末尾
- insert(i, elem) 把元素插入到指定位置
- pop(elem) 删除list末尾的元素
1
2
3
4
5
6
7>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> len(classmates); // 3
# 向list中追加元素到末尾
>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
tuple
元组tuple
,一旦初始化就不能修改。
1 | >>> classmates = ('Michael', 'Bob', 'Tracy'); |
在定义tuple的时候,tuple元素就必须被确定下来
1 | >>> t = (1, 2) |
条件判断
- if else
1 | age = 3 |
- elif
1
2
3
4
5
6
7age = 3
if age >= 18:
print('adult')
elif age >= 16: # 表示else if
print('tennager')
else:
print('kid')
input
input()返回的数据类型是str
, str
不能直接喝整数比较,需要把str
转换成整数。int()
函数可以完成这件事。
循环
for x in ...
循环就是把每个元素带入变量x
, 然后执行缩进块语句1
2
3
4sum = 0
for x in [1, 2, 3, 4, 5, 6, 7]:
sum = sum + x
print(sum)while
循环,只要满足条件,就不断循环,条件不满足时退出循环1
2
3
4
5
6sum = 0;
n = 99;
while n>0:
sum = sum + n
n = n - 2
print(sum)break
退出循环continue
跳过当前循环,直接开始下一次循环1
2
3
4
5
6n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续print()语句不会执行
print(n)
dict字典
使用键-值(key-value)存储,具有极快的查找速度
- pop(key)方法,会从dict中删除对应的键值,返回被删除的值
1
2
3
4
5
6
7
8
9
10
11
12>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Adam'] = 67 # 可以通过指定键值的方式来增加dict元素
>>> d['Adam']
67
>>> d.get('Thomas')
# None
>>> d.get('Thomas', -1)
-1
dict
与list
相比是一种用空间换取时间的方法,需要牢记:dict的key必须是不可变对象。
dict
根据key
来计算value
的存储位置,如果每次计算的key
不同,那dict
的内部就混乱了,这个通过key
计算未知的方法称为哈希算法(Hash)
set
set
和 dict
类似,是一组key
的集合,不存储value
。由于key
不能重复,所以在set
中,没有重复的key
。
- add(key) 可以添加元素到set中,可以重复添加,但不会有效果
- remove(key) 可以删除元素
1 | >>> s = set([1, 2, 3]) |
set可以看成数学意义上无序和无重复元素的集合,因此set
可以做数学意义上的交集、并集等操作
1 | >>> s1 = set([1, 2, 3]) |