㈠ 如何學習python總結之談
C++、Java乃至C#都可以看做是同一類型的語言:C++還算靈活,但紛繁復雜的語法使得生產效率低下,Java提高了生產效率,卻損失了靈活性;C#算是在生產效率和靈活性平衡之間做得不錯了,但是還是不夠的,要不Boo語言之父就不用憤而著Boo了。Python首先是一種動態類型和強類型語言,動態類型意味著你不再需要為每一個變數的類型做無數次的聲明,因為編譯器會幫你做類型判斷,它會跟根據變數的賦值來決定變數的類型。強類型則是意味著你不能將一個string當成一個int來用,除非你顯式地轉換它。
Python本身是結構緊湊的,因為space在C++、Java、C#是會被忽略的,而且還有"{}"去界定code block,那麼如果你喜歡,你就可以將所有代碼寫在一行上,寫得多麼讓人暈頭轉向都行。
中是不可能出現的,因為在
中只有一種分隔符,就是冒號":",同時通過縮進來區分code block,或許你一開始會對這樣的方式有點不習慣,但是到了後來,你會發現這樣的方式會讓你獲益非淺,因為你養成了一種很好的代碼風格。
別以為Python是一種很學院派的語言,盡管很多人認為它十分適合作為學習編程的入門語言。事實上,
Python不僅很適合初學者學習編程,而且還是一種功能強大的語言,你可以用它來做其他語言能夠做的任何事情。而Python本身也幾乎無處不在,
Python編寫的程序可以在各種主流的操作系統中運行,甚至於Palm。哦,差點忘了,Eric Raymond還告訴我們說黑客必須掌握四種語言,首推就是Python了。
,當然如果你一天都不可以離開.NET的話,就從IronPython開始學習Python吧。
與C++、Java乃至C#相比,用Python編寫並執行這個經典程序是不是要快得多呢?呵呵~~~如果我現在就下定論說,
Python的生產效率很高的話,你已經會罵我騙人了。
好,稍安毋躁源碼天空
,咱們再來點有實際意義的代碼吧。不過在此之前,你得先去下載兩個十分有名的類庫:wxPython和Twisted。下載並安裝完了嗎?好,我們開始EnjoyPythonwith you in ten minutes之旅吧。
fromwxPython
.wximportwxPySimpleApp,wxFrameapp=wxPySimpleApp()frame=wxFrame(None,-1,"HelloWorld")
㈡ 對Python中數組的幾種使用方法總結
對Python中數組的幾種使用方法總結
今天小編就為大家分享一篇對Python中數組的幾種使用方法總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
二維數組的初始化
matirx_done = [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]
就將其初始化為一個與matrix相同大小的元素全為 0 的矩陣
數組的多級排序
在數組 idea_collect = [[3, 1, 2], [3, 2, 1], [3, 2, 2], [3, 1, 1]] 中, 先按照第二項排列, 再按照第三項倒序排列 可寫為:
idea_collect.sort(key=lambda x: (x[1], -x[2]))
其中, x[1] 代表第二項正序排列, -x[2] 代表第三項倒序排列
排列結果為 [[3, 1, 2], [3, 1, 1], [3, 2, 2], [3, 2, 1]]
在一個 class 中多個函數不傳參使用同一個數組
如例所示:
class Partition:
def __init__(self):
self.num_complete = []
def partition(self, num, start, end):
self.num_compelete = num
def partition_core(self):
del self.num_compelete[0]
其中,self.num_compelete就是 class 中兩個函數同時可以直接調用的數組, 不過最好先在def __init__中聲明這個數組
以上這篇對Python中數組的幾種使用方法總結就是小編分享給大家的全部內容了
㈢ python查詢AD域信息的方法總結
很多公司都在使用AD域來管理用戶及組織架構,我們可以使用Python來進行自動化運維。網上很多資料不全而且都很古老,特地根據最近的代碼編寫經歷,編寫了如下通過python查詢AD域信息方法總結:
環境:
原理匯總 :
通過LDAP協議來連接及訪問AD域服務,可以把AD域理解成某種類型資料庫,我們通過AD賬號和密碼來訪問其中存儲資料庫欄位信息。為了更好地了解其中欄位及含義,建議下載一個ADExplorer.exe綠色工具軟體,直接去微軟官網下載免費的綠色軟體,以下是下載鏈接(查看左邊的菜單Networking Utilities中包含的Active Directory Explorer):
https://docs.microsoft.com/en-us/sysinternals/
通過這個軟體,我們可以很方便地查看各種欄位信息,為後面的連接獲取足夠的前提信息 。
#建立和關閉域連接
以上代碼把連接和關閉連接分開,是為了避免在一個程序中需要頻繁調用連接時,避免經常關閉,可以節省大量的資源和時間,可以在程序開頭建立連接,在程序退出時才關閉即可
#模糊查詢組信息
#模糊查詢域中的workstation信息
查詢到所需信息以後,還可以直接調用pandas,保存為excel文件
㈣ python調試程序BUG的心得技巧分享
【導讀】相信各位Python工程師們在寫Python代碼的時候,免不了經常會出現bug滿天飛這種情況,這個時候我們可能就得一個標點一個標點的去排查,費時又費力,但是,我們又很難發現到底是其中的哪一個步驟,導致了這些問題的出現。導致這些問題的其中一個原因,就是我們沒有養成良好的編程習慣。編程習慣就好比是電影中的特效。電影特效越好,呈現出來的觀影效果也自然越好。同樣,如果我們能夠養成好的編程習慣,在查找錯誤的時候,自己的思路就會更加清晰。下面是小編整理的解決Python項目bug的心得技巧分享,包含六小點,希望對大家有所幫助。
方法一:使用項目管理工具
無論Python項目簡單與否,我們都應該使用Git進行版本控制。大部分支持Python的IDE(集成開發環境)都內置了對Git這一類項目管理工具的支持。
我們在修改代碼時,常常會出現改著改著程序就崩了的情況,改出的最新版本有時候還不如上一個版本。而Git,恰好能夠及時幫我們保存之前的版本。使用了它以後,我們也不需要不停地用「ctrl+z」來撤回代碼了。
方法二:使用Python的內置函數
Python的內置函數和標准庫都可以處理常見的用例,而不需要自己重新定義函數。
但是,剛剛入門的Python開發人員們對其中的函數並不熟悉。所以他們經常會遇到這樣一個問題——在不需要記住內容的情況下,如何才能知道標准庫中的內容是否涵蓋了自己的用例?最簡單的方法是將標准庫索引和內置函數概述頁添加為書簽,並且在遇到「日常編程」類問題的時候立即瀏覽一下。我們使用這些函數的頻率高了,自然也就能記住這些函數了。
方法三:使用正確的模塊
與內置函數和標准庫一樣,Python中大量的第三方模塊集合,也可以幫助我們節省大量的人力。通過PyPI的Web前端,可以針對我們的問題觸發搜索詞,我們很容易就能找到適合自己的解決方案。
方法四:使用OOP
面向對象編程(OOP)將數據結構與用於操作它們的方法捆綁在一起,從而使編寫高級代碼更加容易。OOP非常適合用於Python這一類高級語言,尤其是項目非常復雜的時候。熟悉Python的開發人員都知道,使用OOP可以減少代碼量,從而節省大量的時間。
但是,也不是所有的項目都需要使用OOP。如果項目沒有特別要求,一些小型的項目就可以不用OOP。
方法五:編寫測試代碼並不斷測試
一個好的程序員一定知道測試之於項目的重要性。編寫測試代碼的確是一個很枯燥的過程,但是不進行測試,我們就無法發現程序的問題所在。
如果一個項目非常復雜的話,我們就必須要做到及時測試。越早測試,就能越早發現問題。而不是說等代碼全部寫完了,才開始進行測試,這樣反而會導致更多的錯誤和更大的工作量。
當然,我們也可以尋找專業的軟體測試人員,來幫助我們進行測試。這樣我們也可以把更多的精力投入到項目程序本身。
方法六:選擇正確的Python版本
部分人仍然在使用Python2,但Python官方的開發團隊早已經不對這一版本進行維護了。聰明的開發人員都已經將Python2里的項目遷移到Python3中了。
Python目前的最新版本是Python3.8.5,但也不是說你一定要使用最新版本。專業的軟體開發人員都知道,任何軟體的最新版本都不一定是最好的,因為它仍需要開發團隊不斷地去改良。程序員一般都會使用在最新版本之前的一個版本,舊版本相對而言是比較成熟的。
無論是運用哪一種語言編寫代碼,優秀的程序員都具備良好的編程習慣。這些習慣不僅能夠讓我們思路更加清晰,也可以幫助我們減輕工作量,從而節省大量的時間。所以,可能你離優秀的程序員,只差一個好習慣了哦~
以上就是小編今天給大家整理發送的關於「解決Python項目BUG的心得技巧分享」的相關內容,希望對大家有所幫助。小編認為要想在大數據行業有所建樹,需要考取部分含金量高的數據分析師證書,這樣更有核心競爭力與競爭資本。
㈤ Python中的幾種特殊數據類型小結
下面介紹了Python中的6種特殊數據類型:
1.list:列表
是一種有序的數據集合,在列表數據結構中的類型並不唯一
定義形式:L=['Micha',100,True]
輸出整個列表的時候顯示為['Micha',100,True]
輸出單個的數值則為:Micha
a.訪問,直接使用L[0]表示第一個元素或者使用L[-1]表示最後一個數據,以此類推,但是注意訪問不能越界(訪問的序號不能超過元素的總數)。
b.添加新元素:使用L.append(100)直接將100加入列表末尾,或者使用L.insert(0,'paul')將paul插入任意位置。
c.刪除元素:L.pop()刪除最後一個元素,或者L.pop(2)刪除第2個位置的元素。
d.替換元素:直接賦值就可以了L[2]=100
2.tuple:元組
是一種有序的列表,但是其一旦創立完畢就不能夠更改,即不能插入,刪除裡面的元素,訪問的方式跟List結構一致。
a.t=()其列印後輸出的形式是()
若t中的數據為一個數字則需要在後面加逗號,以區分普通數字,如t=(1,),列印出(1,)而非1,多元素的話則沒有這個要求。
b.可以在不變的tuple中加入可變的List如t=(『a』,'b',['A','B'])
3.dict:字典
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
len()函數可以計算任意集合的大小
其中可以簡單地使用d[key]的形式來查找對應的value,這和list很像,不同之處是,list必須使用索引返回對應的元素,而dict使用key,當key不存在的時候,使用該key可能出現錯誤,因此:要避免KeyError發生,有兩個辦法:
一是先判斷一下key是否存在,用in操作符:
if'Paul' in d:
print d['Paul']
如果'Paul'不存在,if語句判斷為False,自然不會執行print d['Paul'],從而避免了錯誤。
二是使用dict本身提供的一個get方法,在Key不存在的時候,返回None:
>>>print d.get('Bart')
59
a.dict中的key不能重復,且dict中的存儲的對應值沒有順序,列印出的東西可能是無序的
b.dict的更新:使用d[『paul']=72求解
c.dict遍歷:
d = {'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>>for key in d:
...print key
遍歷只能獲得key的值,需要通過key值獲得對應的value
4.set:集合
無序但是所有元素唯一,不重復
a.定義:s = set(['A', 'B', 'C']),查看set的內容:
>>>print s
set(['A','C', 'B'])
可以用in來判斷是否存在於集合中
b.遍歷
s =set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for xin s:
print x[0]+':',x[1]
c.添加元素到集合中
s.add(4)
d.刪除元素
s.remove(4)若該元素不在集合中將會報錯
5.Unicode編碼
Python在後來添加了對Unicode的支持,以Unicode表示的字元串用u'...'表示,比如:
printu'中文'
注意:不加u,中文就不能正常顯示中文。
a.轉義形式:u'中文 日文 韓文'
b.輸出多行:
u'''第一行
第二行'''
c.raw+多行的形式:
ur'''Python的Unicode字元串支持"中文",
"日文",
"韓文"等多種語言'''
如果中文字元串在Python環境下遇到UnicodeDecodeError,這是因為.py文件保存的格式有問題。可以在第一行添加註釋
# -*-coding: utf-8 -*-
目的是告訴Python解釋器,用UTF-8編碼讀取源代碼。然後用Notepad++另存為, 並選擇UTF-8格式保存。
6.raw的作用
如果一個字元串包含很多需要轉義的字元,對每一個字元都進行轉義會很麻煩。為了避免這種情況,我們可以在字元串前面加個前綴r,表示這是一個「raw」字元串,裡面的字元就不需要轉義了。例如:
r'(~_~)//'
但是r'...'表示法不能表示多行字元串,也不能表示包含'和"的字元串,如果要表示多行字元串。
㈥ python中類的理解與總結
9. 類
Python 的類機制通過最小的新語法和語義在語言中實現了類。它是 C++ 或者 Mola-3 語言中類機制的混合。就像模塊一樣,Python 的類並沒有在用戶和定義之間設立絕對的屏障,而是依賴於用戶不去「強行闖入定義」的優雅。另一方面,類的大多數重要特性都被完整的保留下來:類繼承機制允許多重繼承,派生類可以覆蓋(override)基類中的任何方法或類,可以使用相同的方法名稱調用基類的方法。對象可以包含任意數量的私有數據。
用 C++ 術語來講,所有的類成員(包括數據成員)都是公有( public )的(其它情況見下文 私有變數),所有的成員函數都是虛( virtual )的。用 Mola-3 的術語來講,在成員方法中沒有簡便的方式引用對象的成員:方法函數在定義時需要以引用的對象做為第一個參數,調用時則會隱式引用對象。像在 Smalltalk 中一個,類也是對象。這就提供了導入和重命名語義。不像 C++ 和 Mola-3 中那樣,大多數帶有特殊語法的內置操作符(演算法運算符、下標等)都可以針對類的需要重新定義。
在討論類時,沒有足夠的得到共識的術語,我會偶爾從 Smalltalk 和 C++ 借用一些。我比較喜歡用 Mola-3 的用語,因為比起 C++,Python 的面向對象語法更像它,但是我想很少有讀者聽過這個。
㈦ 如何學習Python總結之談
學習python主要是自學或者報班學習的方式,但不建議自學。
如果想通過學習python改行,那就需要明確一下自己的方向。因為python編程有很多方向,有網路爬蟲、數據分析、Web開發、測試開發、運維開發、機器學習、人工智慧、量化交易等等,各個方向都有特定的技能要求。
想學的話,當然是可以學習的。python是一門語法優美的編程語言,不僅可以作為小工具使用提升我們日常工作效率,也可以單獨作為一項高新就業技能!
python可以做的事情:
軟體開發:用python做軟體是很多人正在從事的工作,不管是B/S軟體,還是C/S軟體,都能做。並且需求量還是挺大的;
數據挖掘:python可以製作出色的爬蟲工具來進行數據挖掘,而在很多的網路公司中數據挖掘的崗位也不少;
游戲開發:python擴展性很好,擁有游戲開發的庫,而且游戲開發絕對是暴力職業;
大數據分析:如今是大數據的時代,用python做大數據也是可以的,大數據分析工程師也是炙手可熱的職位;
全棧工程師:如今程序員都在向著全棧的方向發展,而學習python更具備這方面的優勢;
系統運維:python在很多linux中都支持,而且語法特點很向shell腳本,學完python做個系統運維也是很不錯的。
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
㈧ 關於python如何實現各進制轉換的總結大全
ctf經常遇到進制轉換的問題,就正好做一個進制轉換總結,分享出來供大家參考學習,下面來一起看看詳細的介紹:
字元串與十六進制轉換
例如網路ctf 12月的第二場第一個misc
?
1
626536377D
比較簡單的一種做法就是直接調用字元串的.decode('hex')解密即可, 但如果不用這個函數你會怎麼解呢?
一種思路就是先2個分組,解出每組的ascii值,合並下字元串即可得到,具體代碼如下
?
1234567
import res='626536377D's = re.findall(r'.{2}',s)s = map(lambda x:chr(int(x,16)),s)print ''.join(s)>>>flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}
前面說了字元串的decode('hex')函數,另外還有兩個轉16進制的函數,這里都總結一下
內置函數hex()
只能轉換10進制整數為十六進制,不能轉字元串
binascii庫的hexlify()和b2a_hex()
這兩個函數的功能是將字元串轉換成十六進制,對應的解密函數分別為 unhexlify()和a2b_hex()
進制互轉
二進制,八進制,十六進制轉10進制比較簡單,直接調用
int函數
?
1
int(str,base) //返回十進制整數,但注意此時第一個參數為字元串
對應的解密函數分別是
?
12345
bin() //10進制轉二進制 oct() //十進制轉八進制 hex() //十進制轉十六進制
但二進制直接轉16進制就需要多走一步了,先用int轉十進制,在用上面提到的hex()函數將十進制轉換成十六進制,比較精簡的寫法是
?
1
map(lambda x:hex(int(x,2)),['0011']) //lambda表達式
或者是
?
1
[hex(int(x,2)) for x in ['0011']] //列表解析
對應的解密函數就是
?
1
map(lambda x:bin(int(x,16)),['ef'])
最後在附上自己用python寫的一個進制轉換小工具,主要功能是對一組二進制,或者ascii,或十六進制轉換成字元串,想必ctf上也經常會遇到這類題型吧
?
041424344
# make by 江sir#coding:utf-8import reimport argparse def bintostr(text): text = text.replace(' ','') text = re.findall(r'.{8}',text) s = map(lambda x:chr(int(x,2)),text) #批量二進制轉十進制 flag = ''.join(s) return flag def asciitostr(text): if ' ' in text: text = text.split(' ') elif ',' in text: text = text.split(',') s = map(lambda x:chr(int(x)),text) flag = ''.join(s) return flag def hextostr(text): text = re.findall(r'.{2}',text) #print text s = map(lambda x:chr(int(x,16)),text) #print s flag = ''.join(s) return flag if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-b") parser.add_argument("-a") parser.add_argument("-x") argv = parser.parse_args() #print argv if argv.b: res = bintostr(argv.b) elif argv.a: res = asciitostr(argv.a) elif argv.x: res = hextostr(argv.x) print res
用法:
十六進制轉字元串:
626536377D
?
12
bintostr.py -x "626536377D"flag{ec8b2ee0-3ae9-4c21-a012-08aa5fa7be67}
二進制轉字元串:
可以有空格,也可以無空格
00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100
?
12
bintostr.py -b "00101111 01100110 00110110 00110111 00110011 00110010 00110100 00110001 00110000 01100001 01100001 01100100 01100011 00110000 00110011 00110111 01100110 01100010 00110000 01100011 01100010 01100001 01100001 00110000 00110000 01100011 00110111 00110101 00110011 00110001 00110011 00110111 00110011 00101110 01110100 01111000 01110100"/.txt
ascii轉字元串
可以是空格分隔,也可以是,分隔
s='45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32'
?
12
bintostr.py -a "45 46 45 46 32 45 32 46 46 45 46 32 46 45 46 46 32 46 46 46 32 45 46 46 46 32 46 46 45 45 46 45 32 45 46 46 46 32 46 46 46 32 46 45 46 46 32"-.-. - ..-. .-.. ... -... ..--.- -... ... .-..
以上實例均來自某些ctf賽題
總結
㈨ Python淺薄的基礎小結上
Python 支持四種不同的數值類型:
整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。
長整型(long integers) - 無限大小的整數,整數最後是一個大寫或小寫的L。
浮點型(floating point real values) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102= 250)
復數(complex numbers) - 復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型。
在Phton中常見的運算加、減、乘、除、求余、冪指數等,同現實生活中的遵循一樣的優先順序。即,乘除運算高於加減運算。例:
Python內置復數的計算支持所有常見復數的計算,對復數處理的數學函數在模塊cmath中:
字元串或串(String)是由數字、字母、下劃線組成的一串字元。Python字元串最大的特點是 不可修改, 只能生成新的字元串,用 雙引號或單引號 都可以表示字元串,多行字元串用三個連續單引號表示,特殊字元用轉義符 「\" 表示如: 製表符"\t",換行符"\n"
>>>str='Hello World!'
>>>print str*2 # 輸出字元串兩次
Hello World!Hello World!
>>>print str+"TEST" # 輸出連接的字元串
Hello World!TEST
>>>len('str') #輸出字元串的長度
12
python的 字串列表 有2種取值順序:
從左到右索引默認0開始的,最大范圍是字元串長度少1
從右到左索引默認-1開始的,最大范圍是字元串開頭
如果你要實現從字元串中獲取一段子字元串的話,可以使用變數 [頭下標:尾下標] ,就可以截取相應的字元串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。比如:
s = 'ilovepython'
s[1:5] 的結果是 love。
當使用以冒號分隔的字元串,python返回一個新的對象,結果包含了以這對偏移標識的連續的內容,左邊的開始是包含了下邊界。
上面的結果包含了s[1]的值l,而取到的最大范圍不包括上邊界,就是s[5]的值p。
'abcd'[3:1:-1] #從右到左
'dc'
一些高級操作:
>>>s='You are my sunshine'
>>>s.split(' ')
['You' ,'are', 'my' ,'sunshine']
>>>t=['one','for','two']
>>>' '.join(t)
'one for two'
>>>t='Mike and Tom'
>>>t.replace('Tom','jane')
'Mike and jane'
python變數的概念和初中代數的方程變數一致,變數就像貼在東西上的標簽,命名規則:大小寫英文、數字和下劃線,且不能用數字開頭,變數可以反復賦值,而且可以是不同類型的變數
序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內置類型,但最常見的是列表和元組。
序列都可以進行的操作包括索引,切片,加,乘,檢查成員。
此外,Python已經內置確定序列的長度以及確定最大和最小的元素的方法。
列表 是最常用的Python數據類型,它可以作為一個方括弧內的逗號分隔值出現。
列表的數據項不需要具有相同的類型
創建一個列表,只要把逗號分隔的不同的數據項使用方括弧括起來即可。
>>>[] #創建空的列表
[]
>>>list() #創建空的列表
[]
>>>alist=['physics','chemistry',1997,2000]
['physics','chemistry',1997,2000]
List(列表) 是 Python 中使用最頻繁的數據類型。
列表可以完成大多數集合類的數據結構實現。它支持字元,數字,字元串甚至可以包含列表(即嵌套)。
列表用[ ]標識,是 python 最通用的復合數據類型。
列表中值的切割也可以用到變數[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認 0 開始,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾。
>>>list=['runoob', 786, 2.23, 'john', 70.2]
>>>tinylist=[123, 'john']
>>>print list # 輸出完整列表
['runoob', 786, 2.23, 'john', 70.2]
>>>'runoob' in alist #某個元素是否存在
True
>>>print list[0] # 輸出列表的第一個元素
runoob
>>>print list[1:3] # 輸出第二個至第三個元素
[786,2.23]
>>>print list[2:] # 輸出從第三個開始至列表末尾的所有元素
[2.23,'john',70.2]
>>>print tinylist*2 # 輸出列表兩次
[123,'john',123,'john']
>>>print list+tinylist # 列印組合的列表
['runoob',786,2.23,'john',70.2,123,'john']
Python的元組 與列表類似,不同之處在於元組的元素不能修改。
元組使用小括弧,列表使用方括弧。
元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。
>>>() #創建空的元組
()
>>>tuple() #創建空的元組
()
元組中只包含一個元素時,需要在元素後面添加逗號如:tup1=(50,);
>>>tup=(1,True,0.234,"holle")
同列表相似 元組 適用:
+ :鏈接兩個元組
* :復制n次,生成新的元組
in :某個元素是否存在
[start:end:step] :切片
值得注意的是元組是不可以更新的( 不可變) 序列,但我們可以對元組進行連接組合生成新的元組如:
>>>tup1=(12,34.56)
>>>tup2=('abc','xyz')
>>>tup3= tup1+tup2
>>>print tup3
(12,34.56,'abc','xyz')
任意無符號的對象,以逗號隔開,默認為元組。
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒號( : )分割,每個對之間用逗號( , )分割,整個字典包括在花括弧( {}) 中 ,格式如下所示:
d= {key1:value1,key2:value2}
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字元串,數字或元組。
字典是可變類型,可以添加,刪除,替換
㈩ 太全了!Python3常用內置函數總結
數學相關
abs(a) : 求取絕對值。abs(-1)
max(list) : 求取list最大值。max([1,2,3])
min(list) : 求取list最小值。min([1,2,3])
sum(list) : 求取list元素的和。 sum([1,2,3]) >>> 6
sorted(list) : 排序,返回排序後的list。
len(list) : list長度,len([1,2,3])
divmod(a,b): 獲取商和余數。 divmod(5,2) >>> (2,1)
pow(a,b) : 獲取乘方數。pow(2,3) >>> 8
round(a,b) : 獲取指定位數的小數。a代表浮點數,b代表要保留的位數。round(3.1415926,2) >>> 3.14
range(a[,b]) : 生成一個a到b的數組,左閉右開。range(1,10) >>> [1,2,3,4,5,6,7,8,9]
類型轉換
int(str) : 轉換為int型。int('1') >>> 1
float(int/str) : 將int型或字元型轉換為浮點型。float('1') >>> 1.0
str(int) : 轉換為字元型。str(1) >>> '1'
bool(int) : 轉換為布爾類型。 str(0) >>> False str(None) >>> False
bytes(str,code) : 接收一個字元串,與所要編碼的格式,返回一個位元組流類型。bytes('abc', 'utf-8') >>> b'abc' bytes(u'爬蟲', 'utf-8') >>> b'xe7x88xacxe8x99xab'
list(iterable) : 轉換為list。 list((1,2,3)) >>> [1,2,3]
iter(iterable): 返回一個可迭代的對象。 iter([1,2,3]) >>> <list_iterator object at 0x0000000003813B00>
dict(iterable) : 轉換為dict。 dict([('a', 1), ('b', 2), ('c', 3)]) >>> {'a':1, 'b':2, 'c':3}
enumerate(iterable) : 返回一個枚舉對象。
tuple(iterable) : 轉換為tuple。 tuple([1,2,3]) >>>(1,2,3)
set(iterable) : 轉換為set。 set([1,4,2,4,3,5]) >>> {1,2,3,4,5} set({1:'a',2:'b',3:'c'}) >>> {1,2,3}
hex(int) : 轉換為16進制。hex(1024) >>> '0x400'
oct(int) : 轉換為8進制。 oct(1024) >>> '0o2000'
bin(int) : 轉換為2進制。 bin(1024) >>> '0b10000000000'
chr(int) : 轉換數字為相應ASCI碼字元。 chr(65) >>> 'A'
ord(str) : 轉換ASCI字元為相應的數字。 ord('A') >>> 65
相關操作
eval****() : 執行一個表達式,或字元串作為運算。 eval('1+1') >>> 2
exec() : 執行python語句。 exec('print("Python")') >>> Python
filter(func, iterable) : 通過判斷函數fun,篩選符合條件的元素。 filter(lambda x: x>3, [1,2,3,4,5,6]) >>> <filter object at 0x0000000003813828>
map(func, *iterable) : 將func用於每個iterable對象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) >>> [6,8,10]
zip(*iterable) : 將iterable分組合並。返回一個zip對象。 list(zip([1,2,3],[4,5,6])) >>> [(1, 4), (2, 5), (3, 6)]
type():返回一個對象的類型。
id(): 返回一個對象的唯一標識值。
hash(object):返回一個對象的hash值,具有相同值的object具有相同的hash值。 hash('python') >>> 7070808359261009780
help():調用系統內置的幫助系統。
isinstance():判斷一個對象是否為該類的一個實例。
issubclass():判斷一個類是否為另一個類的子類。
globals() : 返回當前全局變數的字典。
next(iterator[, default]) : 接收一個迭代器,返回迭代器中的數值,如果設置了default,則當迭代器中的元素遍歷後,輸出default內容。
reversed(sequence) : 生成一個反轉序列的迭代器。 reversed('abc') >>> ['c','b','a']