利用Python进行数据分析(2021.12.29):数据结构、函数、错误和异常、文件操作

本文详细介绍了Python中的数据结构,包括元组、列表、字典和集合的使用,如元组的不可变性、列表的添加删除操作、字典的创建与更新以及集合的数学运算。此外,还讲解了Python中的函数、错误和异常处理,以及文件和操作系统交互的基础知识,如文件的读写操作。
摘要由CSDN通过智能技术生成

主要内容:

  1. 基础数据结构:元组、列表、字典和集合
  2. Python函数
  3. 学习Python文件对象,以及如何与本地硬盘交互。

一、数据结构和数列

1. 元组

元组是一个固定长度,不可改变的Python序列对象。创建元组最简单的形式是用逗号分隔一列值:

tup=1,2,3
tup
Out[3]: (1, 2, 3)

用tuple函数可以将任意序列或迭代器转换为元组

a=tuple(range(3))
a
Out[5]: (0, 1, 2)

可以用方括号访问元组中的元素,序列从0 开始

元组中储存的对象可能是 可变对象,一旦创建了元组,元组中的对象就不能修改了:

li=tuple(['foo',[1,2],True])
li
Out[7]: ('foo', [1, 2], True)
li[2]=False
Traceback (most recent call last):
  File "C:\Users\lenovo\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-8-b795e8412d61>", line 1, in <module>
    li[2]=False
TypeError: 'tuple' object does not support item assignment
li[1].append(3)
li
Out[10]: ('foo', [1, 2, 3], True)

如果元组中的某个对象是可变的,比如列表,可以在原位进行修改。

可以用加号运算符将元组串联起来:

('a','b')+(1,2)+('add','x')
Out[15]: ('a', 'b', 1, 2, 'add', 'x')

元组乘以一个整数,像列表一样,会将几个元组的复制串联起来:

a=(1,2)
a*4
Out[17]: (1, 2, 1, 2, 1, 2, 1, 2)

对象本身并没有被复制,只是引用了他。

拆分元祖
将元组赋值给类似元组的变量,Python会试图拆分等号右边的值:

a = (1,2,3)
c,d,e=a
c
Out[20]: 1

变量拆分常用来迭代元组或列表序列

for a,b,c in seq:
    print('a={0},b={1},c={2}'.format(a,b,c))
    
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

Python最近新增了更多高级的元组拆分功能,允许从元组的开头“摘取”几个元素。使用特殊的语法*rest:

values = 1,2,3,4,5
a,b,*rest = values
a,b
Out[26]: (1, 2)
rest
Out[27]: [3, 4, 5]

rest部分是想要舍弃的部分,rest的名字不重要。作为惯用写法,将不需要的变量使用下划线。

tuple方法:很有用的count(也适用于列表),可以统计某个值的出现频率:

a=(1,1,1,2,2,2,2,3,3,3,3,3,3)
a.count(3) #统计3出现的频率
Out[31]: 6

2、列表

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

a_list = [2,3,7,None]
b=(1,2,3)
list(b)
Out[34]: [1, 2, 3]

(1)添加和删除元素
append:在末尾添加元素

a_list.append('p')
[2, 3, 7, None, 'p']

insert:在特定位置插入元素

a_list.insert(0,1) #在0处插入值1
a_list
Out[40]: [1, 2, 3, 7, None, 'p']

pop:移除并返回指定位置的元素

l=a_list.pop(2)
l
Out[42]: 3

remove:去除某个值,remove会先寻找第一个值并除去。

in:检查列表是否包含某个值(反之 not in)

(2)串联和组合列表
与元组类似,可以用加号将两个列表串联起来:

x = [4,None,'foo']
y = [4,5,6]
x+y
Out[46]: [4, None, 'foo', 4, 5, 6]

如果已经定义了一个列表,用extend方法可以追加多个元素:

x.extend([3,3,[4,5]])
x
Out[48]: [4, None, 'foo', 3, 3, [4, 5]]

sort:将一个列表原地排序(不创建新的对象):

a=[0,5,1,7,6,3,2]
a.sort()
a
Out[51]: [0, 1, 2, 3, 5, 6, 7]

sort有一些选项,其中之一是二级排序key,可以用这个key进行排序。例如:按长度对字符串进行排序

s = ['one','two','three','four']
s.sort(key=len)
s
Out[54]: ['one', 'two', 'four', 'three']

sorted函数,产生一个排好序的序列副本。

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

import bisect
c=[1,2,2,2,3,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值