python序列處理場景案例

2021-03-02 運維部落

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=pValueError Traceback (most recent call last)<ipython-input-5-c90260dd655e>in<module>()---->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']

 

## 拓展


 

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

相關焦點

  • 使用biopython處理序列數據
    通過biopython, 我們可以方便的讀取這些格式的文件,並提取其中的信息。具體地,通過以下3個子模塊來處理序列數據1. Bio.Seq2. Bio.SeqRecore3.Bio.SeqIO其中Bio.Seq表示最原始的序列對象,是最核心的模塊,提供了序列的格式化,反向互補,鹼基計數等基本功能;Bio.SeqRecord表示序列記錄,在序列對象的基礎上,進一步添加了序列的id, 名稱,屬性等各種注釋信息;Bio.SeqIO模塊則用於讀取特定的文件格式,返回 SeqRecord對象。
  • 序列比對在biopython中的處理
    序列比對是生物信息學分析中的常見任務,包含局部比對和全局比對兩大算法,局部比對最經典的代表是blast, 全局比對則用於多序列比對。在biopython中,支持對序列比對的結果進行讀寫,解析,以及運行序列比對的程序。
  • 集合:Python最後一類序列,序列知識點匯總
    主題Python基礎知識點「序列」已經進入第十一個章節,學完最後一類序列「集合」後,再對序列知識點進行總結。1、何為集合?3、列表、元組、字典、集合四類序列間的異常?集合定義:集合是Python中一種無序可變、元素不能重複的序列。
  • python的模塊和序列
    前言概要本章節主要講述python中的模塊和序列的概念以及如何使用模塊和序列化方面的知識。模塊的概念在python中有個關鍵詞是import,代表的是導入、加載的意思。>包含一組模塊的包(package)在一些常見的場景裡,我們所描述的模塊 其實就是一個包含python定義和聲明的py文件,文件名就是模塊名字加上.py的後綴。
  • 如何使用python技術完成數據集缺失值多種應用場景的濾除或填充?
    小編在本文中主要通過python技術來講解不同數據需求背景下的數據缺失值處理方法。特別提示一下,我們在學習的過程中,需要有這樣的思維,我們是為了處理數據而使用python,不是為了使用python而進行數據處理。我們需要從本質上掌握缺失值處理方法,然後才是python技術在這些場景上有什麼樣的函數或方法可以更便捷、更簡單的解決問題。
  • 用Python進行時間序列分解和預測
    時間序列預測的需求不僅存在於各類業務場景當中,而且通常需要對未來幾年甚至幾分鐘之後的時間序列進行預測。如果你正要著手進行時間序列預測,那麼本文將帶你快速掌握一些必不可少的概念。什麼是時間序列?如何在Python中繪製時間序列數據?時間序列的要素是什麼?如何分解時間序列?經典分解法如何獲得季節性調整值?
  • Fluent Python - Part2 序列構成的數組
    序列Python 使用統一的風格去處理序列數據,不管是哪種數據結構,它們都共用一套豐富的操作:迭代,切片,排序和拼接。
  • Fluent Python - Part4 文本和字節序列
    人類使用文本,計算機使用字節序列--- Esther Nam 和 Travis Fischer本章內容基本沒啥用,平常也基本接觸不到多編碼類型的文本處理
  • 使用Python圖像處理庫Pillow處理圖像文件
    Python圖像處理庫Pillow,幫助讀者進一步了解Python的基本概念:模塊、對象、方法和函數的使用。本案例使用圖像處理庫Pillow中的模塊、對象來處理圖像:實現讀取圖像、獲取圖像信息、調整圖像大小、旋轉圖像、平滑圖像、剪切圖像等基本圖像處理任務。
  • Python中的時間序列處理 中篇
    # Pandas時間序列:按時間索引Pandas時間序列工具非常適合用來處理
  • 手把手教你用Python進行時間序列分解和預測
    你可以在此處(https://otexts.com/fpp2/classical-decomposition.html)了解有關加法和乘法分解的更多信息。在下面的代碼中,要獲得時間序列的分解,只需賦值model=additive。
  • Python時間序列數據分析--以示例說明
    在閱讀本文之前 ,推薦先閱讀:時間序列預測之--ARIMA模型http://www.cnblogs.com/bradleon/p/6827109.html本文主要分為四個部分:用pandas處理時序數據怎樣檢查時序數據的穩定性怎樣讓時序數據具有穩定性時序數據的預測1.
  • python面向對象之異常處理
    異常的概念 程序在運行時,如果 `Python 解釋器` 遇到 到一個錯誤,會停止程序的執行,並且提示一些錯誤信息,這就是 異常 程序停止執行並且提示錯誤信息 這個動作,我們通常稱之為:拋出(raise)異常> 程序開發時,很難將 所有的特殊情況 都處理的面面俱到,通過 異常捕獲 可以針對突發事件做集中的處理,從而保證程序的 穩定性和健壯性
  • 乾貨 :手把手教你用Python進行時間序列分解和預測
    時間序列預測的需求不僅存在於各類業務場景當中,而且通常需要對未來幾年甚至幾分鐘之後的時間序列進行預測。如果你正要著手進行時間序列預測,那麼本文將帶你快速掌握一些必不可少的概念。什麼是時間序列?如何在Python中繪製時間序列數據?時間序列的要素是什麼?如何分解時間序列?經典分解法如何獲得季節性調整值?
  • python中集合set的使用場景概述
    在python中,集合set具有字典key的特點,其元素無序且唯一,可以通過大括號{}或者函數set來創建,用法如下>>> a = set((1, 2, 3))>>> a{1, 2, 3}>>> type(a)<class 'set'>>&
  • 獨家 | 手把手教你用Python進行時間序列分解和預測
    時間序列預測的需求不僅存在於各類業務場景當中,而且通常需要對未來幾年甚至幾分鐘之後的時間序列進行預測。如果你正要著手進行時間序列預測,那麼本文將帶你快速掌握一些必不可少的概念。什麼是時間序列?如何在Python中繪製時間序列數據?時間序列的要素是什麼?如何分解時間序列?經典分解法如何獲得季節性調整值?
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    在做時間序列分析時,我們經常要對時間序列進行平穩性檢驗,而我們常用的軟體是SPSS或SAS,但實際上python也可以用來做平穩性檢驗,而且效果也非常好,今天筆者就講解一下如何用python來做時間序列的平穩性檢驗。首先我們還是來簡單介紹一下平穩性檢驗的相關概念。圖1.
  • 放棄Excel,學習Python的理由,1個案例領略Python處理表格的魅力
    前面內容,我們講了一些關於Python處理Excel文件的案例。Excel表格處理老司機教你:使用Python處理電子表格公式的正確姿勢真實案例引發的思考,如何分組統計電子表格數據,Python輕鬆搞定Excel表格搬到Python界面上?可以實現!
  • 如何快速學會Python處理數據?(5000字走心總結)
    今天我分享一些自己學習Python的心得,並用一個案例來說明python解決問題的基本思路和框架。1 如何學好Python 1.1 明確自己的需求(最好是剛需)聽到別人說Python很牛很厲害,也想跟著學,這樣的人肯定是學不好python的。沒有明確的需求和動力,就會導致你學python兩天打魚三天曬網,沒有恆心也沒有決心。
  • Python做數據分析-簡潔、易讀、強大
    由於python是一種解釋性語言,大部分編譯型語言都要比python代碼運行速度快,有些同學就因此鄙視python。但是python是一門高級語言,其生產效率更高,時間通常比CPU的時間值錢,因此為了權衡利弊,考慮用python是值得的。