Python 学习笔记(数据类型)

记一些 Python 的学习笔记,数据类型基础:


数据类型

  • 数字 Number
  • 字符串 String
  • 列表 List
  • 元组 Tuple
  • 字典 Dictionary
  • 集合 Sets

不可变数据:Number(数字)、String(字符串)、Tuple(元组)、Sets(集合)。

可变数据:List(列表)、Dictionary(字典)。

数字:Python3 支持 intfloatboolcomplex(复数)。

整数

  • 一些常用计算:
运算 输入 输出 描述
除法 2 / 2 1.0 永远返回一个浮点数
floor除法 3 // 2 1 丢掉任何小数部分,返回整数 ( 1.5 -> 1 )
求余 17 % 3 2 返回整数
幂乘方 5 ** 2 25 5 的平方
  • 十六进制表达: 加 0x 前缀,例如 0xff00

浮点数

整数和浮点数的混合计算中,会转换为浮点数计算。

  • 科学计数法: 1.23e91.2e-5

复数

3+5j,虚数部分用 j 表示,或 complex(3, 5)

布尔值

TrueFalse,注意区分大小写。

字符串

  • 转义符: \
输入 输出 描述
'\'' ' 能正确输出 '
'\n' 会换行
'\\n' \n 不会换行
r'\n' \n r'string' 默认字符串为原始字符串,不转义
  • 多行字符串文本:
'''\
   这是第一行
   这是第二行
'''
  • 字符串拼接:
描述 输入 输出
重复 'un' * 3 ununun
连接 'un' + 'un' unun
相邻文本自动连接 'un' 'un' unun
自动连接不适用于表达式 ('un' * 3) 'un' error
  • 截取、切片:
a = 'Python'

print(a[0])  # 输出 P
print(a[-1]) # 输出 n ,最后一位,-0实际是0

# 切片 左闭右开
print(a[:2])   # 输出 Py
print(a[2:])   # 输出 thon
print(a[:100]) # 输出 Python
print(a[100:]) # 输出 ''
  • 格式化:

    例一:
    'Hello, %s' % 'world',实际输出 'Hello, world' , 其中 %s 被替换成 world

    例二:
    '%s, you have %d apples' % ('Ben', 2),实际输出 'Ben, you have 2 apples' , 其中 %s 被替换成 Ben%d 被替换成 2

    例三:
    '%d' % 3 '%2d' % 3 '%02d' % 3, 实际输出 '3' ' 3' '03',依次代表正常、2位数(右对齐)、2位数前置补0。
    '%.2f' % 3.1415, 实际输出 '3.14', 保留两位小数。

    例四:
    'Hello, {0}, {1.2f}'.format('Ben', 3.1415),实际输出 Hello, Ben, 3.14

正常输出 %%% 转义

占位符 描述
%d 整数
%f 浮点数
%s 字符串
%x 十六进制
  • 和数字比较

字符串不能直接和数字比较, int('123') < 1000

列表

有序集合,可添加和删除其中元素

  • 索引
a = ['Python', 123, True, 'XYZ']

print(a[0])   # 输出 Python
print(a[-1])  # 输出 XYZ
print(a[100]) # 错误

# 切片 左闭右开
a[0:1] = []   # 现在 a 为 [123, True, 'XYZ']
  • 增删
a = ['Python', 123, True, 'XYZ']

# 删
print(a.pop())     # 输出 XYZ, 现在 a 为 ['Python', 123, True]
print(a.pop(1))    # 输出 123, 现在 a 为 ['Python', True]
a.remove('Python') # 移除列表中第一个匹配项
del a[0]           # 删除项

# 增
a = ['Python', True]
a.append('XYZ')    # 现在 a 为 ['Python', True, 'XYZ']
  • 列表生成式
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
  • 生成器

创建一个包含100万个元素的列表,会占用大量内存,并且通常也用不到全部元素。而生成器不必创建完整的列表,而是在循环的过程中不断推算出后续的元素,节省了大量空间。

squares = (x * x for x in range(10)) # 可用 for 循环迭代

# 把函数变成生成器 generator
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b             # 调用 next() 时的返回,再次执行时从此处继续
        a, b = b, a + b
        n = n + 1
    return 'done'

元组

一旦初始化就不能改变

t = ('a', 'b', ['A', 'B'])

t[2][0] = 'X' # 此时 t 为 ('a', 'b', ['X', 'B'])

上面代码,修改的是元组 t 中的列表, 元组并没有改变,因为 t[2] 指向没变。

只有一个元素的写法 t = (1,),因为 t = (1) 实际为数字 1

字典

使用 键-值(key-value)储存,具有极快的查找速度

a = {
    'Ben': 2,
    'Lemon': 3,
    'Tom': 6
}

# 如果key不存在,dict就会报错
print(a['Jack'])  # error

# 两种方法避免因为key不存在而报错

# 1. in判断是否存在
if 'Jack' in a:
    print(a['Jack'])

# 2. 通过字典提供的get()方法
a.get('Jack')     # return None
a.get('Jack', -1) # return -1

# 删除
a.pop('Ben')      # return 2 此时 a 为 {'Lemon': 3, 'Tom': 6}

# 输出所有键
print(a.keys())   # return dict_keys(['Lemon', 'Tom'])
# 输出所有值
print(a.values()) # return dict_values([3, 6])

dict 内部存放的顺序,和 key 放入的顺序没有关系。

key 不能变,所以用字符串、整数等作为 key ,不能使用 list

集合

无序和无重复元素的集合,类似于只有 key 没有 value 的字典,比如 {1, 2, 3}key 同样不能是可变元素 list

# 创建集合
s = set([1, 2, 3]) # 提供一个 list 作为输入集合

# 重复元素在set中自动被过滤
s = set([1, 1, 2, 2, 3, 3])

# 显示的顺序也不表示set是有序的
>>> s
{1, 2, 3}

# 增
s.add(4)           # {1, 2, 3, 4}

# 删
s.remove(4)        # {1, 2, 3, 4}

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])

# 交集
>>> s1 & s2
{2, 3}

# 并集
>>> s1 | s2
{1, 2, 3, 4}

s = set([(1, 2, 3)])
print(s)           # {(1, 2, 3)}

s = set([(1, 2, [3, 4])])
print(s)           # error

数据类型函数整合

一些和数据类型有关的函数整理,并标出相应的模块

数字函数

  • 数学函数
函数 描述
abs(x) 绝对值
max(x, y, z) 返回参数中的最大值
min(x, y, z) 返回参数中的最小值
pow(x, y) 返回 x 的 y 次方
round(x[, y]) x 四舍五入到 y 位小数,无参数 y 则默认整数
math.ceil(x) 向上取整
math.floor(x) 向下取整
math.exp(x) e 的 x 次幂
math.fabs(x) 绝对值,返回浮点数
math.log(x) 以 e 为基数的 x 的对数
math.log10(x) 以 10 为基数的 x 的对数
math.modf(3.15) 返回(小数部分,整数部分),例 (0.149999, 3.0),都是浮点数
math.sqrt(x) x 的平方根,浮点型
  • 数学常量
常量 描述
math.pi 圆周率
math.e 自然常数
  • 随机数函数
常量 描述
random.choice(seq) 从序列的元素中随机挑一个
random.randrange([开始值,]结束值[, 间隔步长]) 从指定范围指定步长中获取随机数,步长默认1
random.random 随机生成 [0,1) 的随机数
random.shuffle(list) 将整个序列随机排序, 返回 None
random.uniform(x, y) 生成 [x, y] 范围内的一个随机数
  • 三角函数
函数 描述
math.acos(x) x 的反余弦弧度值
math.asin(x) x 的反正弦弧度值
math.atan(x) x 的反正切弧度值
math.atan2(y, x) 给定的 x、y 坐标的反正切弧度值
math.cos(x) 余弦
math.sin(x) 正弦
math.tan(x) 正切
math.degrees(x) 弧度转角度,浮点型
math.radians(x) 角度转弧度,浮点型

字符串方法

函数 描述
capitalize() 首字符大写
lower() 全转为小写
upper() 全转为大写
center(w, f) 以 w 为宽居中,以 f 填充
ljust(w[, f]) 以 w 为宽左对齐,以 f 填充,默认空格
rjust(w[, f]) 以 w 为宽右对齐,以 f 填充,默认空格
count(str, beg=0, end=len(str)) str 在字符串中出现次数,beg 和 end 指定查找位置
endswith(str, beg=0, end=len(str)) 是否以 str 结束
expandtabs(tabsize=8) 将 tab 转为空格,默认为 8 空格
find(str, beg=0, end=len(str)) 返回 str 在字符串中位置,没有则 -1
rfind(str, beg=0, end=len(str)) 从右边找
index(str, beg=0, end=len(str)) 返回 str 在字符串中位置,没有则报错
join(seq) 以字符串作间隔符,将序列seq合并为新字符串
lstrip() 截掉字符串左边的空格或指定字符
rstrip() 截掉字符串右边的空格或指定字符
strip() 截掉字符串两边的空格或指定字符
replace(old, new[, max]) 将字符串中 old 替换为 new,不超过 max 次

列表方法

函数 描述
append(obj) 在列表末尾添加新对象
count(obj) 某个元素在列表中出现的次数
extend(seq) 将另一个序列中的值追加到列表末尾
index(obj) 返回第一个匹配项的索引位置
insert(index, obj) 将对象插入列表
pop(index) 移除列表中的一个元素,默认最后一个元素,并返回值
remove(obj) 移除某个值的第一个匹配项
reverse() 反向排列
sort([func]) 排序
clear() 清空列表
copy() 复制列表

字典方法

函数 描述
clear() 删除字典内所有函数
copy() 返回一个字典的浅复制
get(key[, defaultValue]) 返回指定键的值,如果没有就返回 defaultValue
key in dict key 在字典中就返回 True, 否则返回 False
items() 返回可遍历的(键,值)元组列表,例 dict_items([(‘key1’, ‘value’), (‘key2’, ‘value2’)])
keys() 以列表返回所有键
values() 以列表返回所有值
setdefault(key, default=None) 如果键不存在,则设为default
update(otherDict) 将 otherDict 的键、值更新到字典中
pop(key[, default]) 删除 key 所对应的值,返回为被删除的值。找不到 key,返回default 值
popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)

猜你喜欢

转载自blog.csdn.net/aq115aq/article/details/80178016