十分鐘學會Python的基本類型

來源:互聯網
上載者:User

標籤:python的基本類型   python的快速入門   

一:起因

(1)說起學習Python的原因,上一篇blog已經提到過了;Python掐指一算不過是自己接觸過的第四門大型語言(從接觸到現在已經2周了)c/c++ ,Java,MATLAB(PS:應該還不算入門,只會簡單的應用),之後就是python了。

(2)c/c++ 到java的過渡是非常短暫的,但是過渡到MATLA就非常的不順利(PS:就是上一篇的blog提到過的,從內心裡抵觸一門未曾謀面的語言),當時就已經感受到了開啟一門新語言阻力非常大(有時可以用可遇不可求來形容)。

(3)從java到python中間,大概有兩三年的時間沒有學習新的語言,一直再鞏固資料結構 和 演算法的基礎東西,和C++的STL,以及JavaWeb編程等等,總之是沒有接觸過新的語言,可想而知接受新事物阻力有多大(ps:自己的思想得有多麼落伍);當然,也正是由於長時間突然接觸一門新語言,對於如何快速掌握一門語言,自己也有自己的一點感觸。

(4)思想和觀念的轉變 —— 感觸分享

 樂於善於接受新鮮事物,對新知識充滿渴求的慾望;

多交朋友,你可能會做到一門技術一門語言的大牛,你不可能門門精通,互相學習;

參見技術交流群 和 技術blog和社區,之後自己再鑽研官方的API

開啟一門新技術的策略:1)從一個感興趣的點入手(培養興趣),運行一些小樣本;2)1-2天簡單的過一下基本的語言(可以不變代碼);3)1-2天開始把教程裡面的一些小程式,自己手動敲一遍;4)2-3天把此語言的資料類型以及封裝類型的(類似STL)的方法應用一下,調試一下;5)進階進階以及進階應用程式;6)總結,總結貫穿始終。

二:詳解

(1)列表(Lists)

1)序列是Python中最基本的資料結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。

2)Python有6個序列的內建類型,但最常見的是列表和元組。序列都可以進行的操作包括索引,切片,加,乘,檢查成員。此外,Python已經內建確定序列的長度以及確定最大和最小的元素的方法。列表是最常用的Python資料類型,它可以作為一個方括弧內的逗號分隔值出現。列表的資料項目不需要具有相同的類型建立一個列表,只要把逗號分隔的不同的資料項目使用方括弧括起來即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000];list2 = [1, 2, 3, 4, 5 ];list3 = ["a", "b", "c", "d"];#與字串的索引一樣,清單索引從0開始。列表可以進行截取、組合等。

3)list

1-- 使用下標索引來訪問列表中的值,同樣你也可以使用方括弧的形式截取字元,如下所示:list[1:5],截取;list[[:-1];
2-- 你可以對列表的資料項目進行修改或更新,你也可以使用append()方法來添加清單項目,如下所示:
3-- 可以使用 del 語句來刪除列表的的元素,如下執行個體:del list[8:-1];
4-- 列表對 + 和 * 的操作符與字串相似。+ 號用於組合列表,* 號用於重複列表。

5-- cmp(list1, list2) 比較兩個列表的元素;  len(list)  列表元素個數; max(list)返回列表元素最大值; min(list)返回列表元素最小值;  list(seq) 將元群組轉換為列表
6--函數
1-- list.append(obj) 在列表末尾添加新的對象
2 list.count(obj) 統計某個元素在列表中出現的次數
3 list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴充原來的列表)
4 list.index(obj)  從列表中找出某個值第一個匹配項的索引位置
5 list.insert(index, obj)  將對象插入列表
6 list.pop(obj=list[-1])   移除列表中的一個元素(預設最後一個元素),並且返回該元素的值

7 list.remove(obj)   移除列表中某個值的第一個匹配項
8 list.reverse()  反向列表中元素
9 list.sort([func])   對原列表進行排序

(2)元組  方法與list基本相同

Python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括弧,列表使用方括弧。

元組建立很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。如下執行個體:

tup1 = ('physics', 'chemistry', 1997, 2000);tup2 = (1, 2, 3, 4, 5 );tup3 = "a", "b", "c", "d";

(3)string字串

字串是 Python 中最常用的資料類型。我們可以使用引號來建立字串。建立字串很簡單,只要為變數分配一個值即可

1)Python逸出字元在需要在字元中使用特殊字元時,python用反斜線(\)逸出字元。如下表:

\(在行尾時) 續行符
\\ 反斜線符號
\‘ 單引號
\" 雙引號
\n 換行

2)Python字串運算子

+ 字串串連a + b 輸出結果: HelloPython

* 重複輸出字串a*2 輸出結果:HelloHello

[] 通過索引擷取字串中字元a[1] 輸出結果 e

[ : ] 截取字串中的一部分a[1:4] 輸出結果 ell

in 成員運算子 - 如果字串中包含給定的字元返回 TrueH in a 輸出結果 1
not in 成員運算子 - 如果字串中不包含給定的字元返回 TrueM not in a 輸出結果 1
r/R 原始字串 - 原始字串:所有的字串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。 原始字串除在字串的第一個引號前加上字母"r"(可以大小寫)以外,與一般字元串有著幾乎完全相同的文法。print r‘\n‘ prints \n 和 print R‘\n‘ prints \n
% 格式字串 請看下一章節

3)三引號

python三引號允許一個字串跨多行,字串中可以包含分行符號、定位字元以及其他特殊字元。三引號的文法是一對連續的單引號或者雙引號(通常都是成對的用)。三引號讓程式員從引號和特殊字元串的泥潭裡面解脫出來,自始至終保持一小塊字串的格式是所謂的WYSIWYG(所見即所得 (WYSIWYG))格式的。

一個典型的用例是,當你需要一塊HTML或者SQL時,這時用字串組合,特殊字元串轉義將會非常的繁瑣。

 errHTML = '''<HTML><HEAD><TITLE>Friends CGI Demo</TITLE></HEAD><BODY><H3>ERROR</H3><B>%s</B><P><FORM><INPUT TYPE=button VALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>'''cursor.execute('''CREATE TABLE users (  login VARCHAR(8), uid INTEGER,prid INTEGER)''')
4)python的字串內建函數

字串方法是從python1.6到2.0慢慢加進來的——它們也被加到了Jython中。
這些方法實現了string模組的大部分方法,如下表所示列出了目前字串內建支援的方法,所有的方法都包含了對Unicode的支援,有一些甚至是專門用於Unicode的。

方法 描述

string.center(width)返回一個原字串置中,並使用空格填充至長度 width 的新字串
string.count(str, beg=0, end=len(string))返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
string.decode(encoding=‘UTF-8‘, errors=‘strict‘)以 encoding 指定的編碼格式解碼 string,如果出錯預設報一個 ValueError 的 異 常 , 除 非 errors 指 定 的 是 ‘ignore‘ 或 者‘replace‘

string.encode(encoding=‘UTF-8‘, errors=‘strict‘)以 encoding 指定的編碼格式編碼 string,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是‘ignore‘或者‘replace‘
string.find(str, beg=0, end=len(string))檢測 str 是否包含在 string 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1
string.index(str, beg=0, end=len(string))跟find()方法一樣,只不過如果str不在 string中會報一個異常.
string.isspace()如果 string 中只包含空格,則返回 True,否則返回 False.

string.lower()轉換 string 中所有大寫字元為小寫.
string.lstrip()截掉 string 左邊的空格
string.partition(str)有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.
string.replace(str1, str2,  num=string.count(str1))把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.
string.rfind(str, beg=0,end=len(string) )類似於 find()函數,不過是從右邊開始尋找.
string.rpartition(str)類似於 partition()函數,不過是從右邊開始尋找.
string.rstrip()刪除 string 字串末尾的空格.
string.split(str="", num=string.count(str))以 str 為分隔字元切片 string,如果 num有指定值,則僅分隔 num 個子字串
.
string.strip([obj])在 string 上執行 lstrip()和 rstrip()

(4)Python 字典(Dictionary)

字典是另一種可變容器模型,且可儲存任意類型對象,如其他容器模型。字典由鍵和對應值成對組成。字典也被稱作關聯陣列或雜湊表。基本文法如下:
dict = {‘Alice‘: ‘2341‘, ‘Beth‘: ‘9102‘, ‘Cecil‘: ‘3258‘}

每個鍵與值用冒號隔開(:),每對用逗號分割,整體放在花括弧中({})。鍵必須獨一無二,但值則不必。值可以取任何資料類型,但必須是不可變的,如字串,數或元組。
1)刪除字典元素  能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下執行個體:

#coding=utf-8#!/usr/bin/pythondict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};del dict['Name']; # 刪除鍵是'Name'的條目dict.clear();     # 清空詞典所有條目del dict ;        # 刪除詞典print "dict['Age']: ", dict['Age'];print "dict['School']: ", dict['School'];

2)字典內建函數&方法  Python字典包含了以下內建函數:
序號 函數及描述
1 cmp(dict1, dict2) 比較兩個字典元素。
2 len(dict) 計算字典元素個數,即鍵的總數。
3 str(dict) 輸出字典可列印的字串表示。
4 type(variable) 返回輸入的變數類型,如果變數是字典就返回字典類型。


1 radiansdict.clear() 刪除字典內所有元素
2 radiansdict.copy() 返回一個字典的淺複製
3 radiansdict.fromkeys() 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
4 radiansdict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值
5 radiansdict.has_key(key) 如果鍵在字典dict裡返回true,否則返回false
6 radiansdict.items() 以列表返回可遍曆的(鍵, 值) 元組數組
7 radiansdict.keys() 以列表返回一個字典所有的鍵
8 radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不已經存在於字典中,將會添加鍵並將值設為default
9 radiansdict.update(dict2) 把字典dict2的鍵/值對更新到dict裡

10 radiansdict.values() 以列表返回字典中的所有值

5)Python 日期和時間

Python程式能用很多方式處理日期和時間。轉換日期格式是一個常見的例行瑣事。Python有一個time and calendar模組可以幫忙。
Python附帶的受歡迎的time模組下有很多函數可以轉換常見日期格式。如函數time.time()用ticks計時單位返回從12:00am, January 1, 1970(epoch) 開始的記錄的當前作業系統時間, 如下執行個體:

上述也就是struct_time元組。這種結構具有如下屬性:

序號 屬性 值
0 tm_year 2008
1 tm_mon 1 到 12
2 tm_mday 1 到 31
3 tm_hour 0 到 23
4 tm_min 0 到 59
5 tm_sec 0 到 61 (60或61 是閏秒)
6 tm_wday 0到6 (0是周一)
7 tm_yday 1 到 366(儒略曆)
8 tm_isdst -1, 0, 1, -1是決定是否為夏令時的旗幟

Time模組

Time模組包含了以下內建函數,既有時間處理相的,也有轉換時間格式的:
序號 函數及描述
1 time.altzone
返回格林威治西部的夏令時地區的位移秒數。如果該地區在格林威治東部會返回負值(如西歐,包括英國)。對夏令時啟用地區才能使用。
2 time.asctime([tupletime])
接受時間元組並返回一個可讀的形式為"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18時07分14秒)的24個字元的字串。
3 time.clock( ) 用以浮點數計算的秒數返回當前的CPU時間。用來衡量不同程式的耗時,比time.time()更有用。
4 time.ctime([secs])  作用相當於asctime(localtime(secs)),未給參數相當於asctime()
6 time.localtime([secs]) 接收時間輟(1970紀元後經過的浮點秒數)並返回當地時間下的時間元組t(t.tm_isdst可取0或1,取決於當地當時是不是夏令時)。
7 time.mktime(tupletime) 接受時間元組並返回時間輟(1970紀元後經過的浮點秒數)。
8 time.sleep(secs)  延遲調用線程的運行,secs指秒數。
9 time.strftime(fmt[,tupletime]) 接收以時間元組,並返回以可讀字串表示的當地時間,格式由fmt決定。

10 time.strptime(str,fmt=‘%a %b %d %H:%M:%S %Y‘) 根據fmt的格式把一個時間字串解析為時間元組。
11 time.time( ) 返回目前時間的時間戳記(1970紀元後經過的浮點秒數)。
12 time.tzset() 根據環境變數TZ重新初始化時間相關設定。

日曆(Calendar)模組 此模組的函數都是日曆相關的,例如列印某月的字元月曆。

星期一是預設的每周第一天,星期天是預設的最後一天。更改設定需調用calendar.setfirstweekday()函數

模組包含了以下內建函數:

序號 函數及描述
1 calendar.calendar(year,w=2,l=1,c=6)返回一個多行字串格式的year年年曆,3個月一行,間隔距離為c。 每日寬度間隔為w字元。每行長度為21* W+18+2* C。l是每星期行數。
3 calendar.isleap(year) 是閏年返回True,否則為false。
4 calendar.leapdays(y1,y2) 返回在Y1,Y2兩年之間的閏年總數。
5 calendar.month(year,month,w=2,l=1)返回一個多行字串格式的year年month月日曆,兩列名,一周一行。每日寬度間隔為w字元。每行的長度為7* w+6。l是每星期的行數。
6 calendar.monthcalendar(year,month)返回一個整數的單層嵌套列表。每個子列表裝載代表一個星期的整數。Year年month月外的日期都設為;範圍內的日子都由該月第幾日表示,從1開始。
7 calendar.monthrange(year,month)返回兩個整數。第一個是該月的星期幾的日期碼,第二個是該月的日期碼。日從0(星期一)到6(星期日);月從1到12。
10 calendar.setfirstweekday(weekday) 設定每周的起始日期碼。0(星期一)到6(星期日)。
12 calendar.weekday(year,month,day) 返回給定日期的日期碼。0(星期一)到6(星期日)。月份為 1(一月) 到 12(12月)。

在Python中,其他處理日期和時間的模組還有:datetime模組  pytz模組  dateutil模組

(0)目錄

快速學Python 和 易犯錯誤(文本處理)

Python文本處理和Java/C比對

十分鐘學會Python的基本類型

快速學會Python(實戰)

大資料處理之道(十分鐘學會Python)



十分鐘學會Python的基本類型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.