Python学习笔记(三)之Python变量类型
1. 标准数据类型
- Numbers(数字)
- String(字符)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
2. Number(数字)
-
数据类型是不允许改变的,如果要改变Number数据类型的值,则需要重新分配内容空间。
-
del
语句可以用来删除一些Number的引用,例:del var可以删除一个var的Number引用;del var1, var2 删除了var1和var2等多个引用时,引用之间加逗号分离。 -
Number有四种不同的数值类型:
- 整型(int)
- 长整型(Long)-无限大小的整数。整数最后是一个大写或小写的L。(长整型在Python3中已弃用)
- 浮点型(float)
- 复数(complex):可以用a+bj,或者complex(a,b)表示。复数的实部a和虚部b都是浮点型。
-
Number类型数值转化:
- int(x, base=?) - x为字符串,base(可省略)表示x的进制数。该函数用于将x转化为十进制数。
- long(x, base=?) - 同上,不过long类型可以无限大
- float(x) - 将字符串x转为浮点数
- complex(real, imag) - 创建一个复数,其中imag可以省略
- str(x) - 将对象x转为字符串
- eval(x) - 将根据传入的类型,返回一个格式化对象
- chr(x) 和 ord(x) 配合使用,可以用来计算一个数的ASCII码并可以将ASCII码转为字符形式。chr(x)是将ASCII转为字符形式,ord(x)则是将字符转为ASCII码。
- hex(x) - 将一个整数转为十六进制字符串
- oct(x) - 讲一个整数转为八进制字符串
-
数学函数(math)
- abs(x) - 计算绝对值
- exp(x) - e的x次幂
- fabs(x) - 绝对值
- sqrt(x) - 平方根
- pow(x, y) - 即x**y,x的y次方
-
三角函数(math)
- sin(x), cos(x), tan(x) 正余弦,正切值
- asin(x), acos(x), atan(x) 反正/余弦,反正切弧度值。
-
随机数函数(random)
- random() 随机生成一个[0,1)范围的实数
- seed(x) - 改变随机数的种子
- choice(seq) - 从序列中随机挑选出一个数。例:random.choice(range(10)) 表示从0到9中随机取出一个数。
- uniform(x, y) - 随机生成一个实数,范围为[x, y]
-
数学常量
- math.pi 圆周率π
- math.e 自然常数
3. String(字符串)
- 字符串的创建用
'
或"
将字符串内容括起来,但是要注意,首尾要相互对应。 - 三个
'
或三个"
可以表示多行的字符串。 - Python中没有单字符类型,单字符也作为字符串使用。
- 方括号可以用来截取字符串。例:var = "Hello";var[0] 可以截取到'H'这个字符,var[0:2]则可以截取"He"。
- 可以用
+
进行字符串拼接。例:var = "Hello"; var1 = var + " World!" ,通过该例子可以将字符串拼接成"Hello World!"的形式。 - Python中使用
\
这个反斜杆来转义字符。例:\\
代表单个的防斜杆,\r
表示回车等。 - 字符串运算符
+
用于字符串拼接*
用于赋值字符串。例:a="Hello"; a*2 == "HelloHello"- in 和 not in 表示某个字符串是否在一个字符串序列中
r/R
写在字符串前,表示原始字符串。例:r'\n' 输出出来就是 \n ,原样输出。u
用于定义一个Unicode字符串。(Unicode把所有语言统一到一套编码里,不会有乱码问题。)
- String内置函数
- str.count(sub, start, end) 计算sub序列在字符串中出现的次数。其中start和end值可以省略。
- str.find(sub, start, end)在字符串中寻找sub序列,找到返回sub第一次出现的位置,找不到返回-1
- str.lower() 将str字符串全部转为小写
- str.upper() 将str字符串全部转为大写
- str.strip() 删除str字符串前后的空格。同理:lstrip()和rstrip()分别去掉左边空格和右边空格。
- len(str) 返回字符串长度
- str.format() 格式化字符串(Python format 格式化函数)
4. List(列表)
- 列表的数据项不一定需要是相同的属性。例:list1 = ['a', 1, 222, "bbb"]
- 列表基本操作:
- 列表创建:list2 = [1, 2, 3]
- 列表访问:list2[0] = 1; list2[0:2] = [1, 2]
- 列表添加:使用append,即list2.append(4)
- 列表删除:使用del, 即del list2[0]
- 列表脚本化操作:
- len() 可以计算列表长度
- 组合:[1,2,3] + [4,5] 可以得到[1,2,3,4,5]
- 重复:["Hello"] * 2 可以得到["Hello", "Hello"]
- 元素是否在list中。例:3 in [1,2,3] 可以得到True
- 遍历:for x in [1,2,3]:print(x)
- 列表截取:
- list3[2] 访问列表第三个元素
- list3[-2] 访问列表倒数第二个元素
- list3[2 : ] 截取从第三个元素开始的往后所有列表元素
- 方法:
- count 计算某个元素出现次数
- pop(index = ?) 默认移除最后一个元素
- remove(obj) 移除第一个匹配项
- reverse() 反向列表
- sort(cmp = None, key = None, reverse = False
- cmp - 表示排序方式
- key - 指定对象中的一个元素来排序
- reverse - True表示降序,False表示升序
5. Tuple(元组)
-
元组和列表相似,他们的区别在于元组中的元素是不可以修改的。
-
元组的基本操作和脚本化操作与列表基本一致,参考上述列表操作即可。
-
虽然元组中的元素是不可以修改的,但是元组是可以拼接(通过
+
拼接,且要赋值给新的元组)和整个元组的删除的。 -
元组形式: tup = (1, 2, 3, "a", "b")
-
任何无符号的对象,以逗号分隔,默认为元组。
6. Dictionary(字典)
- 字典形式: d =
- 键值时唯一的,如果重复,则会覆盖。
- 值可以取任何数,但是键是不可变的。
- 字典基本操作:
- 字典
创建
:dict = - 字典
访问
:dict['name'] 输出为 张三 - 字典
修改
:dict['class'] = 'First' ,如果字典中已有该键,则覆盖;若没有则为增加这个新的键值对。 - 字典
删除
:del dict['name'] 删除'name'这个条目; del dict 删除整个字典
- 字典
- 键的基本准则:
- 一个字典中不允许键出现两次,同一个键被赋值两次,后一个会被记住。
- 键必须不可变,所以可以用数字,字符串或元组充当,但不能用列表。
- 如果用dict['id'],其中'id'这个键不存在则会出现程序报错问题。为了解决该问题,我们可以通过两种方法判断key是否存在:
- 一是通过
in
判断,例:上面那个例子中,可以用'id' in dict,可以判断'id'这个键值是否存在于字典dict中。 - 二是通过字典中提供的方法
get()
实现。该方法如果找到key则返回该该key对应的value值,如果找不到该key,则返回None或自己指定的值。例:dict.get('id') 或 dict.get('id', -1),其中-1为没有找到时返回的值。
- 一是通过
- dict的特点:
- 查找和插入速度快,不会随key数据量的增大而增大。dict的工作原理,就像我们查找字典一样,根据索引表来查找,可以大大的提高查找效率,而list 的查找就像拿到一本字典,从前往后翻来一页一页的查找,查找效率自然没有那么高。
- 需要占用的内存空间大,内存浪费严重。