人工智能学习 2 - 基础Python数据类型

由于我本身有 Golang, NodeJS 经验, Python 也写过一些项目, 这里基础语法只快速写一些和其他语言略有不同的习惯.

数据类型

数据类型参考: https://www.geeksforgeeks.org/python-data-types/?ref=lbp

基础数据类型包括:

  • 数字(int, float)
  • 布尔 bool
  • 序列(字符串 str, list [], tuple ())
  • map {k:v}
  • set {}
  • binary

类型判断:

  • type() 判断类型

  • isinstance() 判断类型是否属于指定类型

  • id() 判断底层是否是一个目标

  • hash() 计算哈希值

  • dir(obj) 查看类型支持的方法

类型转化:

数据类型转换, 参考: https://cloud.tencent.com/developer/article/1945472

  • 数字-字符串: int(), float(), bool(), str()
  • 数字-字符: chr(), unichr(), ord(), hex(), oct()
  • 元组-列表: tuple(), list()
  • 字典: dict()
  • 集合: set(), frozenset()

输出格式化:

类型格式化符号, 参考: https://python-course.eu/python-tutorial/formatted-output.php

使用 print("字符串" % (变量tuple)) 格式化 %[flags][width][.precision]type

  • di 整型
  • f 浮点
  • c 字符
  • rs 字符串

数字 Numeric

参考: https://www.runoob.com/python3/python3-number.html

Int 整型

1000 以下的整型数字, 是不基于引用计数销毁的, 所有 1000 以下数字的变量都指向相同目标

运算有 +, -, *, /除, //整除, %取余, **求幂(与 pow 函数相同)

除法不判断 0 会有 ZeroDivisionError 问题

整型有无限长度, 限制是电脑支持的上限

Float 浮点

  • round(x, dec) 遇到5是奇上偶下

Bool 布尔

与 NodeJS 类似, or 都是懒惰判断

  • 1 and 2 => 2 (最后一个值)
  • 1 or 0 => 1 (第一个真值或最后一个值)

本质上 True => 1, False => 0

反过来判断为 False 的有 0, 0.0, "", [], {}, ()

Python允许连续判断: a<b<c, 连续赋值 a=b=c=1

优先级 not > and > or

序列 Sequence

  • 链接 +, 重复 *
  • 判断子字符串: in, not in
  • 取下标 []
  • 截取 [:]
  • 长度 len()

Str 字符串

参考: https://www.runoob.com/python3/python3-string.html

Unicode 编码的不可变序列

单引号, 双引号, 三引号均可. 三引号可以编写跨行字符串, 注释.

  • 拼接: "_".join(["a","b","c"])
  • 分割: "xx".split(" ")

List 列表 []

参考: https://www.runoob.com/python3/python3-list.html

类型不统一的可变序列

  • 增: L.append(item)
  • 删: del L[id]L.remove(v)
  • 改: L[id] = v
  • 查: L[id]
  • 排序: L.sort(reverse=False) inline正序, sorted(L) 不影响原列表返回排序好的新列表

Tuple 元组 ()

参考: https://www.runoob.com/python3/python3-tuple.html

类型不统一的不可变序列, 只允许查询.

字典 Map

参考: https://www.runoob.com/python3/python3-dictionary.html

字典: {k:v} 结构的无序可变键值对, k 必须是不可变对象(可hash哈希的): str, bool, int, float, tuple.

可以使用 map() 将 [[k,v], ...], [(k,v), ...], ["kv", ...] 转化为字典

  • 增/改: d[k] = v

  • 删: del d[k]v = d.pop(k)

  • 查: d[k]

  • 清空: d.clear(), 字典还在变成空字典

  • 删除: del d, 字典删除不存在了

  • 键: d.keys()

  • 值: d.values()

  • 键值对: d.items()

集合 Set

参考: https://www.runoob.com/python3/python3-set.html

集合: {} 无序数据集. 支持交并差补.

可变集合 Set:

  • 增: s.add(x)

  • 删: s.remove(x) 不存在报错, s.discard(x) 不存在不报错, s.pop() 随机删除

  • 改: s.update(x, y)

  • 清空: d.clear(), 字典还在变成空字典

  • 成员关系: in, not in 判断元素是否在集合中

  • 集合关系: ==, !=, >, >=, <, <= 判断是否是子集

  • 交集 &, &= 并且

  • 并集 |, |=

  • 差集 -, -=

  • 补集 ^, ^= 异或

不可变集合 FrozenSet: 不能做增删修改操作

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.