一、数据类型
在Python中,能够直接处理的数据类型有以下几种:
数据类型 | 例子 |
---|---|
整数 | 1、100、-8080、0 |
浮点数 | 1.23、3.14、-9.01、1.23e9、12.3e8、1.2e-5 |
字符串 | ‘I love python’(单引号)、"I love python"(双引号)、'I\'m OK!'(转义字符"\") |
布尔值 | True、False(可以用and、or、not运算) |
空值 | None(不能理解为0) |
二、字符串和编码
1.编码类型
(1)ASCII编码:127个字符(包括大小写英文字母、数字和一些符号),每个字符由一个字节表示。
(2)Unicode编码:采用两个字节表示一个字符,在ASCII码的基础上把所有语言统一到一套编码里。
(3)UTF-8编码:把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。采用UTF-8编码节省空间。
2.编码类型区别:
字符 | ASCII | Unicode | UTF-8 |
---|---|---|---|
A | 01000001 | 00000000 01000001 | 01000001 |
中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
3.Python字符串
(1)单个字符的编码
函数 | 含义 | 例子 |
---|---|---|
ord() | 获取字符的整数表示 | ord('A') ->65、ord(‘中’) -> 20013 |
chr() | 把编码转换为对应的字符 | chr(66) -> 'B'、chr() -> '文' |
(2)字符串的编码:python中bytes用b''表示
函数 | 含义 | 例子 |
---|---|---|
encode() | 将str编码为指定的bytes | ‘ABC’.encode('ascii') -> b'ABC'、'中文'.encode('utf-8') -> b'\xe4\xb8\xad\xe6\x96\x87' |
decode() | 将bytes解码为str | b'ABC'.decode('ascii') -> 'ABC'、b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') ->‘中文’ |
(3)格式化:
占位符 | 替换内容 | 例子 |
---|---|---|
%d | 整数 | ‘I am %d years old’ % 25 |
%f | 浮点数 | 'Pi is %f' % 3.141592 |
%s | 字符串 | 'Hello,%s' % 'JIWilliams' |
%x | 十六进制整数 | 'Mask:%x' % \xFF0000 |
三、list(列表)和tuple(元组)
1.list列表:是一种有序的集合,可以随时添加和删除其中的元素
操作 | 例子 |
---|---|
初始化 | classmates = ['Michael', 'Bob', 'Tracy'] |
获取值 | classmates[0] -> 'Michael'、classmates[-1] -> 'Tracy' |
添加 | classmates.append('Adan') -> ['Michael', 'Bob', 'Tracy', 'Adan'] |
插入 | classmates.insert(1, 'Jack') -> ['Michael', 'Jack', 'Bob', 'Tracy', 'Adan'] |
删除 | classmates.pop() -> ['Michael', 'Jack', 'Bob', 'Tracy']、 classmates.pop(1) -> ['Michael', 'Bob', 'Tracy'] |
2.tuple元组:是一种有序列表,一旦初始化就不能修改
操作 | 例子 |
---|---|
初始化 | classmates = ('Michael', 'Bob', 'Tracy')、 t = (1,) //只有一个元素的tuple定义时必须加一个逗号, |
四、条件判断
1.if语句的完整形式:
形式 | 例子 |
---|---|
if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4> | age =3 if age >= 18: print('adult') elif age >= 6: print('tenager') else: print('kid') |
五、循环
1.for循环
形式 | 例子 |
---|---|
for <变量> in <条件>: <执行> | sum = 0 for x in [1,2,3,4,5,6,7,8,9,10]: sum = sum + x print(sum) |
2.while循环
形式 | 例子 |
---|---|
while <条件>: <执行> | (1)break n=1 while n<=100: if n>10: break print(n) n=n+1
(2)continue n=0 while n<10: n=n+1 if n%2==0: continue print(n) |
六、dict(字典)和set(集合)
1.dict字典:全称dictionary,使用键-值(key-value)存储,具有极快的查找速度
操作 | 例子 |
---|---|
初始化 | d = {'Michael': 95, 'Bob':75, 'Tracy':85} |
赋值 | d['Michael'] = 67 |
获取值 | d['Michael'] -> 67、d.get('Michael') -> 67、 d.get('Thomas',-1) -> -1(当key不存在,指定返回-1) |
删除 | d.pop('Bob') -> {'Michael': 95, 'Tracy':85} |
2.set集合:要创建一个set,需要提供一个list作为输入集合。set是一组key的集合,但不存储value,在set中没有重复的key
操作 | 例子 |
---|---|
初始化 | s1 = set([1,2,3]) -> {1,2,3}、 s2 = set([2,3,4]) -> {2,3,4} |
添加 | s1.add(4) -> {1,2,3,4} |
删除 | s1.remove(4) -> {1,2,3} |
交集 | s1 & s2 -> {2,3} |
并集 | s1 | s2 -> {1,2,3,4} |
七、不可变对象
str是不可变对象,而list是可变对象。
对于可变对象,比如list,对list进行操作, list内部的内容会变化,比如:
>>> a = ['c', 'b', 'a']
>>> a.sort()
>>> a
['a','b','c']
而对于不可变对象,比如str,对str进行操作,会生成新的对象:
>>> a = 'abc'
>>> b = a.replace('a','A')
>>> b
'Abc'
>>> a
'abc'
所以,对于不可变对象来说,调用对象自身的任意方法,也不会改变对象自身的内容。相反,这些方法会创建新的对象并返回,这样就保证了不可变对象本身永远是不可变的。