机械学习—零基础学习日志(Python做数据分析04)

列表

与元组对比,列表的长度可变、内容可以被修改。你可以用方括号定义,或用list函数:

操作列表:

增添:append方法,insert方法,list.extend(list)

删除:del方法,pop方法,remove方法

判断元素是否在列表内:in方法

排序:sorted(list),list.sort()。

二分搜索和维护已排序的列表

bisect模块支持二分查找,和向已排序的列表插入值。bisect.bisect可以找到插入值后仍保证排序的位置,bisect.insort是向这个位置插入值:

重点解释一下:

python 复制代码
import bisect

a = [1, 3, 4, 4, 7, 8]
x = 4

# 查找插入点
index = bisect.bisect(a, x)
print(index)  # 输出 4

在这个例子中,列表 a[1, 3, 4, 4, 7, 8],我们查找 4 的插入点。由于 bisect 默认是右查找,因此返回索引 4,表示如果插入 4,它会位于列表中已经存在的最后一个 4 之后。所以,是把你需要的数值后一位插入位置(index),帮助你找出来。

注意:bisect模块不会检查列表是否已排好序,进行检查的话会耗费大量计算。因此,对未排序的列表使用bisect不会产生错误,但结果不一定正确。

enumerate函数

Python内建了一个enumerate函数,可以返回(i, value)元组序列:

python 复制代码
for i, value in enumerate(collection):
   # do something with value

当你索引数据时,使用enumerate的一个好方法是计算序列(唯一的)dict映射到位置的值:

python 复制代码
In [83]: some_list = ['foo', 'bar', 'baz']

In [84]: mapping = {}

In [85]: for i, v in enumerate(some_list):
   ....:     mapping[v] = i

In [86]: mapping
Out[86]: {'bar': 1, 'baz': 2, 'foo': 0}

zip函数

zip可以将多个列表、元组或其它序列成对组合成一个元组列表:

python 复制代码
In [89]: seq1 = ['foo', 'bar', 'baz']

In [90]: seq2 = ['one', 'two', 'three']

In [91]: zipped = zip(seq1, seq2)

In [92]: list(zipped)
Out[92]: [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]

zip可以处理任意多的序列,元素的个数取决于最短的序列:

python 复制代码
In [93]: seq3 = [False, True]

In [94]: list(zip(seq1, seq2, seq3))
Out[94]: [('foo', 'one', False), ('bar', 'two', True)]

给出一个"被压缩的"序列,zip可以被用来解压序列。也可以当作把行的列表转换为列的列表。这个方法看起来有点神奇:

python 复制代码
In [96]: pitchers = [('Nolan', 'Ryan'), ('Roger', 'Clemens'),
   ....:             ('Schilling', 'Curt')]

In [97]: first_names, last_names = zip(*pitchers)

In [98]: first_names
Out[98]: ('Nolan', 'Roger', 'Schilling')

In [99]: last_names
Out[99]: ('Ryan', 'Clemens', 'Curt')

重点参考来源:

相关推荐
The_Ticker8 分钟前
印度股票实时行情API(低成本方案)
python·websocket·算法·金融·区块链
ZC跨境爬虫14 分钟前
Scrapy工作空间搭建与目录结构解析:从初始化到基础配置全流程
前端·爬虫·python·scrapy·自动化
EAIReport18 分钟前
国外网站数据批量采集技术实现路径
开发语言·python
超绝振刀怪19 分钟前
【C++可变模板参数】
开发语言·c++·可变模板参数
Ulyanov22 分钟前
基于ttk的现代化Python音视频播放器:UI设计与可视化技术深度解析
python·ui·音视频
YangYang9YangYan25 分钟前
财会行业学数据分析的价值分析
数据挖掘·数据分析
Freak嵌入式29 分钟前
MicroPython LVGL基础知识和概念:时序与动态效果
开发语言·python·github·php·gui·lvgl·micropython
لا معنى له1 小时前
Var-JEPA:联合嵌入预测架构的变分形式 —— 连接预测式与生成式自监督学习 ----论文翻译
人工智能·笔记·学习·语言模型
世人万千丶1 小时前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙