Python 内置数据结构之一(类型转换及列表)

2019-08-05  本文已影响0人  Alexander_Zz

一、分类

1.1 数值型
1.2 序列对象
1.3 键值对

二、数值型

2.1 数值型
2.2 类型转换(built-in)

三、数字的处理函数

3.1 round()

四舍六入,五取偶
亦可理解为小数距离 0 或 1 那方更近,距离一样则优先最近的偶数

print (round (2.51))   # 距离 1 更近
3

print (round (2.49999))   # 距离 0 更近
2

print (round (2.5))   # 最近偶数为 2
2

print (round (3.5))   # 最近偶数为 4
4

print (round (-0.5))
0

print (round (-0.49))
0

print (round (-0.51))
-1

print (round (-1.5))
-2
i示例.png 负数.png
3.2 floor() 地板、seil() 天花板

向下或向上取整

import math

math.floor(1.5)
1

math.floor(2.5)
2

math.floor(2.6)
2

math.ceil(2.6)
3

math.ceil(2.2)
3
3.3 int()

取整数部分,和 // 整除一样

print (int (2.1))
2

print (int (2.5))
2

print (int (2.6))
2
3.4 min()
min (2,5)
2
3.5 max()
max (2,5)
5
3.6 pow(x,y)

等价 x**y

pow (2,5)
32

2 ** 5
32
3.7 math.sqrt()
math.sqrt(4)
2.0

4 ** 0.5
2.0
3.8 进制函数

注意:返回值是字符串

print (bin (10))
0b1010

print (oct (10))
0o12

print (hex (10))
0xa
示例.png
3.9 math.pi

π

import math

math.pi
3.141592653589793
示例.png
3.10 math.e

自如常数

import math

math.e
2.718281828459045
示例.png

四、类型判断

4.1 type(obj)

注意:返回类型,而不是字符串

a = 1
b = 'abc'

type(a)
int

type(b)
str
示例.png
4.2 isinstance(obj, class_or_tuple)

注意:返回布尔值

isinstance(6,str)
False

isinstance(6,(str,int,bool))
True
示例.png

五、列表 list

5.1 简介

注意:列表是可变的

5.2 list 的定义及初始化
# 不可直接定义大小
lst = list(5)
------------------------------------------------------------------------
TypeError                              Traceback (most recent call last)
<ipython-input-1-1b0da86a3f37> in <module>
----> 1 l1 = list(5)

TypeError: 'int' object is not iterable


lst = list()
lst = []
lst = [1,3,5,7,'xyz']   # 即定义,也赋值
lst = list(range(5))
5.3 列表索引访问
list [index]
    index 就是索引,使用中括号访问
5.4 列表查询
1. 通过值 value ,从指定区间查找列表内的元素是否匹配
2. 匹配第一个就立即返回索引
3. 匹配不到,跑出异常 ValueError
索引示例.png
1. 返回列表中匹配 value 的次数
1. index 和 count 方法都是 O(n)
    1.1 O(1) 
        这种时间复杂度是最好的,追求的,效率高,执行次数固定,数据越大,效率越高
    1.2 O(n)
        这种时间复杂度随数据量   线性   递增
    1.3 O(n^2)
        这种时间复杂度随数据量   指数   递增,效率低,极力避免出现
2. 随着列表数据规模的增大,而效率下降
1. len()
5.5 查看帮助
1. help(keyword)
    keyword 可以是变量,对象,类名,函数名,方法名
IPython 示例.png
5.6 列表元素修改
1. list [index] = value
2. 索引不要超界
修改示例及超界示例.png
5.7 列表增加、插入元素
1. 列表尾部追加元素,返回 None
2. 返回 None 就意味着没有新的列表产生,就地修改
3. 时间复杂度是 O(1)
append 示例.png
1. 在指定的索引 index 处插入元素 object
2. 返回 None 就意味着没有新的列表产生,就地修改
3. 时间复杂度是 O(n)
4. 索引能超上下界么
    4.1 超越上界,尾部追加
    4.2 超越下界,头部追加
insert 示例.png
1. 将可迭代对象的元素追加进来,返回 None
2. 就地修改
extend 示例.png
1. 连接操作,将两个列表连接起来
2. 产生新的列表,原列表不变
3. 本质上调用的是 __add__() 方法
列表 + 示例.png
1. 重复操作,将本列表元素重复 n 次,返回新的列表
2. 需要注意重复操作的元素
    2.1 示例
        x = [[1,2,3]]*3
        print(x)
        x[0][1] = 20
        print(x)

        y = [1]*5
        y[0] = 6
        y[1] = 7
        print(y)
列表 * 示例.png 重复元素示例.png
5.8 列表删除元素
1. 从左至右查找第一个匹配 value 值,移除该元素,返回 None
2. 就地修改
3. 效率低
remove 示例.png
1. 不指定索引 index ,就从列表尾部弹出一个元素
2. 指定索引 index ,就从索引处弹出一个元素,索引超界抛出 IndexError 错误
3. 效率?指定索引的时间复杂度,不指定的时间复杂度
    3.1 如果 pop 尾部元素,效率是高,时间复杂度 O(1)
    3.2 如果指定索引不在尾部,效率和 remove 相似,时间复杂度 O(n),慎用
pop 示例.png
1. 清除列表所有元素,剩下一个空列表
2. 大规模数据集清除时,可能引起垃圾回收,影响效率,慎用
5.9 列表其他操作
1. 将列表元素  反转 ,返回 None
2. 就地修改
reverse 示例.png
1. 对列表元素进行  排序  ,就地修改,默认升序
2. reverse 为 True ,反转,降序
3. key 一个函数,指定 key 如何排序
    3.1 l1.sort(key=FUNCTIONNAME)
sort 示例.png sort(key) 示例.png
1. 示例
    [3,4] in [1,2,[3,4]]
    True
    5 not in [1,2,[3,4]]
    True
in 示例.png
结合 if 判断.png
5.10 列表复制
1. 影子拷贝,也叫浅拷贝,遇到引用类型,只是复制了一个引用而已
copy 引用示意图.png shadow copy 示例.png
1. copy 模块提供了 deepcopy
2. 示例

import copy
l1 = [1,[2,3,4],5]
l2 = copy.deepcopy(l1)
l2[1][1] = 20
l2 == l1
深拷贝示例.png

六、随机数

6.1 random 模块
import random
6.2 randint(a,b)
random.randint(0,1)
1
randint 示例.png
6.3 choice(seq)
random.choice([1,3,5,7])
3
choise 示例.png
6.4 randrange ([start,]stop[,step])
random.randrange(1,7,2)
1
randrange 示例.png
6.5 random.shuffle(list) -> None
l1 = list(range(5))
random.shuffle(l1)
shuffle 示例.png
6.6 sample(population, k)
random.sample(['a','b','c','d'],2)
['c','a']
sample 示例.png
上一篇 下一篇

猜你喜欢

热点阅读