python处理实例_python序列处理场景案例

原标题:python序列处理场景案例

Python的数据结构和算法

解决方案

拓展

解决方案

拓展

什么是序列

序列的例子

案例一:将序列分解为单独的变量

案例二:从任意长度的可迭代对象是分解元素

Python的数据结构和算法

Python内置了很多有用的数据结构,比如列表(list),集合(set),字典(dictionary),绝大情况下我们可以直接使用这些数据结构,但有些特殊需求需要我们考虑,比如搜索,排序,排列,筛选等。本次内容我们着重探讨常见的数据结构和数据结构相关的算法。

## 什么是序列

维基百科上如此解释,我们可参考一二:

众所周知,最早时期计算机是为了解决数学而诞生,序列是数学的一种,被排成一列的对象或事件;这样,每个元素不是在其它元素前,就是在其它元素后。因此,序列是有顺序的元素的集合。

## 序列的例子

有限序列

(C, Y, R)是一个字母序列,顺序是C第一,Y第二,R第三。

无限序列

(a1, a2, .., an) 无限个元素按一定顺序的排列

空序列

() 不包括任何元素的序列

案例一:将序列分解为单独的变量

我们有一个包含N个元素的元组或序列,现在想将它分解为N个单独的变量

解决方案

任何序列或可迭代对象都可以通过简单的赋值操作来分解为单独的变量,唯一要求是变量和总数和结构需要和序列相吻合。

In [1]:p= (4,5) In [2]: x, y =p In [3]: xOut[3]:4 In [4]: yOut[4]:5 In [5]: m, n,q=p---------------------------------------------------------------------------ValueError Traceback (most recent call last)in()---->1m, n,q=p ValueError: not enough values to unpack (expected3, got2)

In[6]:data= ['ACME',50,91.1, (2012,12,21) ] In[7]:name, shares, price, date =data In[8]:nameOut[8]:'ACME' In[9]: priceOut[9]:91.1 In[10]: dateOut[10]: (2012,12,21) In[11]:name, shares, price, (year, month, day) =data In[12]: yearOut[12]:2012 In[13]: monthOut[13]:12

## 拓展

如果想丢弃指定某些特定值如何操作

In[14]: _, shares, price, _ =data In[15]: sharesOut[15]:50 In[16]: priceOut[16]:91.1

案例二:从任意长长度的可迭代对象是分解元素

对于可迭代对象长度可长的情况,可能会出现“分解的值过多(too many values to unpack)”的异常

## 解决方案

python的*表达式可以解决该类问题。如期末成绩平均值统计,每班80个学生,分别去掉第一名和最后一名求平均值,这里就很方便了。

In [24]: grades = (42,55,64,74,83,90,93,95,98,99,99,99) In [25]: def drop_frist_last(grades):...:first, *middle,last= grades...:returnavg(middle)...: In [26]:middleOut[26]: [55,64,74,83,90,93,95,98,99,99]

In[27]:record= ['Dave','dave@example.com','773-555-1212','847-555-1212'] In[28]:name, email, *phone_num =record In[29]:nameOut[29]:'Dave' In[30]: emailOut[30]:'dave@example.com' In[31]: phone_numOut[31]: ['773-555-1212','847-555-1212']

## 拓展

通过split切割字符串

In[35]:line= '_hidd:*:261:261:HID Service User:/var/empty:/usr/bin/false' In[36]: uname, *fields, homedir,sh=line.split(':') In[37]: homedirOut[37]: '/var/empty' In[38]:shOut[38]: '/usr/bin/false'

指定多个丢弃变量

In[39]:data= ['ACME',50,91.1, (2012,12,21) ] In[40]:name, *_, (*_, year) =data In[41]:data= ['ACME',50,91.1, (12,21,2012) ] In[42]:name, *_, (*_, year) =data In[43]: yearOut[43]:2012

请随需且勿全申请加群

以太python小范围沟通群,群号码:662769442(新群)

Ansible中文权威群:372011984(千人群已满)

Ansible中文权威-2号群:486022616(余10空位,计划开3群)

Ansible中文权威-3号群,群号码:319894617(满)

AWK&SED企业实战: 260039357(千人群,余200空位)

docker企业架构实践:491533668(千人群已满)

Docker企业架构实践2群: 601403280(新)

ELK企业架构1群 378216203返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值