Python系列(一)基础类型

Posted by YaPi on December 12, 2018

基本数据类型

所有内容基于Python3

  • Number

Number

  • int
  • float
  • bool
  • complex

Python里面不区分单精度和双精度,所有表示都是双精度

注意点:

  1. 整数加、减、乘小数都为浮点数类型
  2. 整数除整数为浮点数,若想得到整数,需要双斜杠:2//2 -> 1(类型为整数),且 双斜杠为整除
  3. 不贰类型Ture
进制

如何表示二进制? 在前面加上0b,如2的二进制为0b10

如何表示八进制? 在前面加上0o,如8的八进制为0o10

如何表示十六进制? 在前面加上0x,如16的十六进制为0x10

  • 进制转换
  1. 转换为二进制,使用 bin()方法,如bin(10) => ob1010
  2. 转换为10进制,使用int()方法
  3. 转换为八进制,使用oct()方法
  4. 转换为十六进制,使用hex()方法

str 字符串

  • 单引号
  • 双引号
  • 三引号(主要用来维持字符串原样输出)

转译字符

\n 和 \r的不同

\n : 移到下一行,但不是行首,而是和上一行水平位置一样 \r : 将光标移到行首,但是不会移到下一行,如果继续输入的话会覆盖掉前面的内容

序列

  • str
  • list
  • tuple

共同点:

  1. 所有元素都有序,会被分配一个序号
  2. 切片操作
  3. 使用 ‘in’ / ‘not in’ 判断一个元素是否在序列中
  4. 使用 len() 函数判断序列元素个数
  5. max()、min()

不同: 字符串和元组都是不可变的

元组和列表 元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写; 而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸

列表

一组数据,列表数据类型不要求一致,可以为任意类型,甚至也可以是列表 定义

[1,2,3,4,5,6]

基本操作

# 单个使用得到具体元素
[1,2,3,4][0]
# 冒号获取,得到一个新元组
[1,2,3,4][-1:]


# 加法
[1,2] + [3,4] => [1,2,3,4]
# 乘法
[1,2] * 2 => [1,2,1,2]
元组

括号表示的一组元素 定义

(1,2,3)

基本操作

# 单个使用得到具体元素
(1,2,3,4)[0]
# 冒号获取,得到一个新元组
(1,2,3,4)[-1:]  => (4,)

# 加法
(1,2) + (3,4) => (1,2,3,4)
# 乘法
(1,2) * 2 => (1,2,1,2)
# 注意点
type((1))) => 类型为int,单个元素得到的是对应元素类型

定义一个元素的元组
type((1,)))
定义一个空元组
type(()))

集合 set

集合是无序、不重复,区别于序列,用大括号表示

定义

{1,2,3}

因为无序,所以无法通过下标或切片方式获取元素

操作

# 存在判断
1 in {1,2,3}
2 not in {1,2,3}

# 求两个集合差集
{1,2,3} - {2,3}
# 交集
{1,2,3} & {2,3}
# 并集
{1,2,3} | {3,4,5}
# 定义一个空的集合,需使用函数
set()

字典 dict

无序,很多个key,value对 类似:{key1:v1,key2:v2} value 可以为任意类型,key需要是不可变类型 定义

{1:1,2:2}
# 获取
{k1:v1,k2:v2}[k1]
# 空字典定义
{}

变量定义

组成:数字、下划线、字母

特点:

  1. 不能用数字开始
  2. 系统关键字不能使用
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in',
'is','lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

虽然type不是保留关键字,但是还是不推荐使用

>>> type=1
>>> type(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

需要注意的是,由于 Python 是严格区分大小写的,保留字也不例外。所以,我们可以说 if 是保留字,但 IF 就不是保留字

表达式优先级

  • 对照表
运算符说明 Python运算符
小括号 ()
乘方 **
按位取反 ~
符号运算符 +(正号)、-(负号)
乘/除 *、/、//、%
加减 +、-
位移 »、«
按位与 &
按位异或 ^
按位或
比较运算符 ==、!=、>、>=、<、<=
is运算符 is 、is not
in运算负 in 、not in
逻辑非 not
逻辑与 and
逻辑或 or
  • and 或 or

其一, 在不加括号时候, and优先级大于or

其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y

其三, x and y 的值只可能是x或y. x为真就是y, x为假就是x