Python 学习 01:基本对象类型
数字 (Number)
数字的类型
整数 (int)
python 自带高精,所以不需要注意范围问题。
1 | a = 10 |
浮点数 (float)
注意浮点数的精度问题。
布尔型 (bool)
构造布尔型:
1 | a = True |
Remark:
变量只是一个标签,对象有类型,变量无类型。
运算
赋值:
=
加减乘:
+, -, *
除:
/
取余(模):
%
整除:
//
四舍五入:
round(number, digits)
取绝对值:
abs(number)
指数:
**
强制类型转换
数字之间可以进行强制类型转换,建议使用如下的显示转换方式:
1 | a = True |
字符串 (String - str)
1 | s = "Hello World !" |
单引号与双引号
当字符串内出现单引号时,要用双引号引起来。
转义字符
\n
:换行\r
:回车\t
:制表符
索引和切片
1 | s = "1234567890" |
num1
是左端点,num2
是右端点, num3
是步长。切片包括左端点,不包括右端点,可以理解为一个左闭右开区间。字符串从 0 开始索引,可以理解为相对于起始位置的偏移量。
不可改变字符串的某个字符。
常用操作
len(str)
:返回序列的长度+
:连接两个字符串in
:判断元素是否在序列中max(str), min(str)
:返回字符串中的最大(小)值(依据 ACSII 编码)*
:重复序列元素str1.split(str2)
:将str1
以str2
为分隔符分割,返回一个列表str.strip()
:去掉左右两边的空格,str.lstrip()
,str.rstrip()
去掉左(右)边的空格str.upper()
,str.lower()
:转为大(小)写str.isupper()
,str.islower()
:检查是否全为大(小)写,非字母会返回False
str.count(x)
:返回x
在str
中出现的次数
序列:元素以人定的顺序排列的一组数据。
编码
在 Python3 中,所有的字符串均是以 Unicode 码存储的
UTF-8 $\to$ decode $\to$ Unicode
Unicode $\to$ encode $\to$ GBK / UTF-8
列表 (list)
1 | lst = [1, 2, 3] |
List 里面的元素可以是任意类型的
索引和切片
与 String
相同,但是 List 是以元素为单位,而不是以字符为单位。
List 也属于序列,但是可以被修改。
常用操作
len(lst)
,+
,in
,max(lst)
,min(lst)
,*
:与字符串相同lst.append(x)
:将x
作为一个整体加入lst
lst.extend(x)
:将x
中的元素拆开加入1lst
,x
必须为可迭代类型lst2 = lst1.copy()
:返回lst1
的浅复制lst.count(x)
:返回x
在lst
中出现的次数lst.index(x)
:返回x
在lst
中第一次出现的索引lst.insert(i, x)
向索引i
处插入元素x
lst.remove(x)
:删除列表中出现的第一个x
del lst[i]
:删除第i
个元素lst.pop(i)
:删除第i
个元素,并返回lst.reverse()
:把列表中的元素反转lst.sort(key=None, reverse=False)
:从小到大排序,key
是一个函数,对每个元素执行这个函数以决定排序规则,reverse
为True
时按从大到小排序
可迭代:字符串、列表、元组、字典都是可迭代的。
list.count(x)
和 str.count(x)
的区别:str.count(x)
可以设置起始和结束位置,而 list.count(x)
不行
直接赋值、深拷贝、浅拷贝:
- 直接赋值:
b = a
,赋值引用,a 和 b 都指向同一个对象。
- 浅拷贝:
b = a.copy()
,a 和 b 是两个独立的对象,但他们的子对象还是指向统一对象(是引用)。
- 深拷贝:
b = copy.deepcopy(a)
,a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
元组 (Tuple - tuple)
1 | tp = (1, 2, 3) |
元组是序列,但是元素不能更改
索引和切片
与 List
相同
列表和元组的相互转化
1 | a = [1, 2, 3, 4] |
元组的用途
元组比列表操作速度快
可以对不需要修改的数据写保护(因为不能被修改)
可以在字典中当作
key
(同样因为不能修改)
字典 (Dictionary - dict)
1 | dct = {1: 'a', 2: 'b', 3: 'c'} |
1,2,3 被称为键 (key),’a’,’b’,’c’ 被成为值 (value)
key 必须是唯一的、不可变的,value 则不一定。
字典不是序列
常用操作
len(dct)
:返回dct
中键值对的数量del dct[key]
,dct.pop(key)
:删除key
对应的键值对key in dct
:判断dct
中是否存在key
dct.clear()
:删除所有键值对dct1 = update(dct2)
:把dct1
的键值对更行到dct1
里dct.get(key, default = None)
:得到字典中key
对应的值,若没有则返回default
dct.clear()
$\ne$ del dct
:‘空’ 不等于 ‘无’