變量類型

1. Python 變量類型

變量存儲在內(nèi)存中的值。這就意味著在創(chuàng)建變量時會在內(nèi)存中開辟一個空間。
基于變量的數(shù)據(jù)類型,解釋器會分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲在內(nèi)存中。
因此,變量可以指定不同的數(shù)據(jù)類型,這些變量可以存儲整數(shù),小數(shù)或字符。

2. 變量賦值

Python 中的變量賦值不需要類型聲明。
每個變量在內(nèi)存中創(chuàng)建,都包括變量的標(biāo)識,名稱和數(shù)據(jù)這些信息。
每個變量在使用前都必須賦值,變量賦值以后該變量才會被創(chuàng)建。
等號(=)用來給變量賦值。
等號(=)運(yùn)算符左邊是一個變量名,等號(=)運(yùn)算符右邊是存儲在變量中的值。例如:

image.png

以上實(shí)例中,100,1000.0和"John"分別賦值給counter,miles,name變量。
執(zhí)行以上程序會輸出如下結(jié)果:

100
1000.0
John

3.多個變量賦值

Python允許你同時為多個變量賦值。例如:

a = b = c = 1

以上實(shí)例,創(chuàng)建一個整型對象,值為1,三個變量被分配到相同的內(nèi)存空間上。
您也可以為多個對象指定多個變量。例如:

a, b, c = 1, 2, "john"

以上實(shí)例,兩個整型對象1和2的分配給變量 a 和 b,字符串對象 "john" 分配給變量 c。

4.標(biāo)準(zhǔn)數(shù)據(jù)類型

在內(nèi)存中存儲的數(shù)據(jù)可以有多種類型。
例如,一個人的年齡可以用數(shù)字來存儲,他的名字可以用字符來存儲。
Python 定義了一些標(biāo)準(zhǔn)類型,用于存儲各種類型的數(shù)據(jù)。
Python有五個標(biāo)準(zhǔn)的數(shù)據(jù)類型:

  • Numbers(數(shù)字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)

4.1 Python數(shù)字

數(shù)字?jǐn)?shù)據(jù)類型用于存儲數(shù)值。
他們是不可改變的數(shù)據(jù)類型,這意味著改變數(shù)字?jǐn)?shù)據(jù)類型會分配一個新的對象。
當(dāng)你指定一個值時,Number對象就會被創(chuàng)建:

var1 = 1
var2 = 10

您也可以使用del語句刪除一些對象的引用。
del語句的語法是:

del var1[,var2[,var3[....,varN]]]]

您可以通過使用del語句刪除單個或多個對象的引用。例如:

del var
del var_a, var_b

4.1.1 Python支持四種不同的數(shù)字類型:

  • int(有符號整型)
  • long(長整型[也可以代表八進(jìn)制和十六進(jìn)制])
  • float(浮點(diǎn)型)
  • complex(復(fù)數(shù))
int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3e+18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2E-12 4.53e-7j
  • 長整型也可以使用小寫"L",但是還是建議您使用大寫"L",避免與數(shù)字"1"混淆。Python使用"L"來顯示長整型。
  • Python還支持復(fù)數(shù),復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示, 復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型

4.1.2Python Number 類型轉(zhuǎn)換

int(x [,base ])         將x轉(zhuǎn)換為一個整數(shù)  
long(x [,base ])        將x轉(zhuǎn)換為一個長整數(shù)  
float(x )               將x轉(zhuǎn)換到一個浮點(diǎn)數(shù)  
complex(real [,imag ])  創(chuàng)建一個復(fù)數(shù)  
str(x )                 將對象 x 轉(zhuǎn)換為字符串  
repr(x )                將對象 x 轉(zhuǎn)換為表達(dá)式字符串  
eval(str )              用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個對象  
tuple(s )               將序列 s 轉(zhuǎn)換為一個元組  
list(s )                將序列 s 轉(zhuǎn)換為一個列表  
chr(x )                 將一個整數(shù)轉(zhuǎn)換為一個字符  
unichr(x )              將一個整數(shù)轉(zhuǎn)換為Unicode字符  
ord(x )                 將一個字符轉(zhuǎn)換為它的整數(shù)值  
hex(x )                 將一個整數(shù)轉(zhuǎn)換為一個十六進(jìn)制字符串  
oct(x )                 將一個整數(shù)轉(zhuǎn)換為一個八進(jìn)制字符串  

4.1.3 Python數(shù)學(xué)函數(shù)

函數(shù) 返回值 ( 描述 )
abs(x) 返回?cái)?shù)字的絕對值,如abs(-10) 返回 10
ceil(x) 返回?cái)?shù)字的上入整數(shù),如math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回?cái)?shù)字的絕對值,如math.fabs(-10) 返回10.0
floor(x) 返回?cái)?shù)字的下舍整數(shù),如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10為基數(shù)的x的對數(shù),如math.log10(100)返回 2.0
max(x1, x2,...) 返回給定參數(shù)的最大值,參數(shù)可以為序列。
min(x1, x2,...) 返回給定參數(shù)的最小值,參數(shù)可以為序列。
modf(x) 返回x的整數(shù)部分與小數(shù)部分,兩部分的數(shù)值符號與x相同,整數(shù)部分以浮點(diǎn)型表示。
pow(x, y) x**y 運(yùn)算后的值。
round(x [,n]) 返回浮點(diǎn)數(shù)x的四舍五入值,如給出n值,則代表舍入到小數(shù)點(diǎn)后的位數(shù)。
sqrt(x) 返回?cái)?shù)字x的平方根,數(shù)字可以為負(fù)數(shù),返回類型為實(shí)數(shù),如math.sqrt(4)返回 2+0j

4.1.4 Python隨機(jī)數(shù)函數(shù)

隨機(jī)數(shù)可以用于數(shù)學(xué),游戲,安全等領(lǐng)域中,還經(jīng)常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。
Python包含以下常用隨機(jī)數(shù)函數(shù):

函數(shù) 返回值 ( 描述 )
choice(seq) 從序列的元素中隨機(jī)挑選一個元素,比如random.choice(range(10)),從0到9中隨機(jī)挑選一個整數(shù)。
randrange ([start,] stop [,step]) 從指定范圍內(nèi),按指定基數(shù)遞增的集合中獲取一個隨機(jī)數(shù),基數(shù)缺省值為1
random() 隨機(jī)生成下一個實(shí)數(shù),它在[0,1)范圍內(nèi)。
seed([x]) 改變隨機(jī)數(shù)生成器的種子seed。如果你不了解其原理,你不必特別去設(shè)定seed,Python會幫你選擇seed。
shuffle(lst) 將序列的所有元素隨機(jī)排序
uniform(x, y) 隨機(jī)生成下一個實(shí)數(shù),它在[x,y]范圍內(nèi)。

4.1.5 Python三角函數(shù)

Python包括以下三角函數(shù):

函數(shù) 返回值 ( 描述 )
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回給定的 X 及 Y 坐標(biāo)值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回歐幾里德范數(shù) sqrt(xx + yy)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 將弧度轉(zhuǎn)換為角度,如degrees(math.pi/2) , 返回90.0
radians(x) 將角度轉(zhuǎn)換為弧度

4.1.6 Python數(shù)學(xué)常量

函數(shù) 返回值 ( 描述 )
pi 數(shù)學(xué)常量 pi(圓周率,一般以π來表示)
e 數(shù)學(xué)常量 e,e即自然常數(shù)(自然常數(shù))。

4.2 Python字符串

字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號('或")來創(chuàng)建字符串。是由數(shù)字、字母、下劃線組成的一串字符。
一般記為 :

s="a1a2···an"(n>=0)
var1 = 'Hello World!'
var2 = "Python jfedu"

4.2.1Python訪問字符串中的值

Python不支持單字符類型,單字符也在Python也是作為一個字符串使用。
python的字串列表有2種取值順序:

  • 從左到右索引默認(rèn)0開始的,最大范圍是字符串長度少1
  • 從右到左索引默認(rèn)-1開始的,最大范圍是字符串開頭

如果你要實(shí)現(xiàn)從字符串中獲取一段子字符串的話,可以使用變量 [頭下標(biāo):尾下標(biāo)],就可以截取相應(yīng)的字符串,其中下標(biāo)是從 0 開始算起,可以是正數(shù)或負(fù)數(shù),下標(biāo)可以為空表示取到頭或尾。
比如:
s = 'ilovepython'
s[1:5]的結(jié)果是love。
當(dāng)使用以冒號分隔的字符串,python返回一個新的對象,結(jié)果包含了以這對偏移標(biāo)識的連續(xù)的內(nèi)容,左邊的開始是包含了下邊界。
上面的結(jié)果包含了s[1]的值l,而取到的最大范圍不包括上邊界,就是s[5]的值p。
加號(+)是字符串連接運(yùn)算符,星號(*)是重復(fù)操作。如下實(shí)例:

image.png

以上實(shí)例輸出結(jié)果:

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

4.2.2Python字符串更新

你可以對已存在的字符串進(jìn)行修改,并賦值給另一個變量,如下實(shí)例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
var1 = 'Hello World!'
print "更新字符串 :- ", var1[:6] + 'jfedu!'

以上實(shí)例執(zhí)行結(jié)果

更新字符串 :- Hello jfedu!

4.2.3 Python轉(zhuǎn)義字符

在需要在字符中使用特殊字符時,python用反斜杠()轉(zhuǎn)義字符。如下表:

轉(zhuǎn)義字符 描述
(在行尾時) 續(xù)行符
| 反斜杠符號
' 單引號
" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉(zhuǎn)義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進(jìn)制數(shù),yy代表的字符,例如:\o12代表換行
\xyy 十六進(jìn)制數(shù),yy代表的字符,例如:\x0a代表換行
\other 其它的字符以普通格式輸出

4.2.4Python字符串運(yùn)算符

下表實(shí)例變量 a 值為字符串 "Hello",b 變量值為 "Python":

操作符 描述 實(shí)例
+ 字符串連接 >>>a + b 'HelloPython'
* 重復(fù)輸出字符串 >>>a * 2 'HelloHello'
[] 通過索引獲取字符串中字符 >>>a[1] 'e'
[ : ] 截取字符串中的一部分 >>>a[1:4] 'ell'
in 成員運(yùn)算符 - 如果字符串中包含給定的字符返回True >>>"H" in a True
not in 成員運(yùn)算符 - 如果字符串中不包含給定的字符返回 True >>>"M" not in a True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉(zhuǎn)義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母"r"(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。 >>>print r'\n' \n >>> print R'\n' \n
% 格式字符串 請看下一章節(jié)

實(shí)例如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
a = "Hello"
b = "Python"
print "a + b 輸出結(jié)果:", a + b 
print "a * 2 輸出結(jié)果:", a * 2 
print "a[1] 輸出結(jié)果:", a[1] 
print "a[1:4] 輸出結(jié)果:", a[1:4] 
if( "H" in a) :
    print "H 在變量 a 中" 
else :
    print "H 不在變量 a 中" 
if( "M" not in a) :
    print "M 不在變量 a 中" 
else :
    print "M 在變量 a 中"
print r'\n'
print R'\n'

以上程序執(zhí)行結(jié)果為:

a + b 輸出結(jié)果: HelloPython
a * 2 輸出結(jié)果: HelloHello
a[1] 輸出結(jié)果: e
a[1:4] 輸出結(jié)果: ell
H 在變量 a 中
M 不在變量 a 中
\n
\n

4.2.5 Python字符串格式化

Python 支持格式化字符串的輸出 。盡管這樣可能會用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用與 C 中 sprintf 函數(shù)一樣的語法。
如下實(shí)例:

#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21) 

以上實(shí)例輸出結(jié)果:

My name is Zara and weight is 21 kg!

python字符串格式化符號:

符 號 描述
%c 格式化字符及其ASCII碼
%s 格式化字符串
%d 格式化整數(shù)
%u 格式化無符號整型
%o 格式化無符號八進(jìn)制數(shù)
%x 格式化無符號十六進(jìn)制數(shù)
%X 格式化無符號十六進(jìn)制數(shù)(大寫)
%f 格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度
%e 用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%E 作用同%e,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%g %f和%e的簡寫
%G %f 和 %E 的簡寫
%p 用十六進(jìn)制數(shù)格式化變量的地址

格式化操作符輔助指令:

符號 功能
* 定義寬度或者小數(shù)點(diǎn)精度
- 用做左對齊
+ 在正數(shù)前面顯示加號( + )
<sp> 在正數(shù)前面顯示空格
# 在八進(jìn)制數(shù)前面顯示零('0'),在十六進(jìn)制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
0 顯示的數(shù)字前面填充'0'而不是默認(rèn)的空格
% '%%'輸出一個單一的'%'
(var) 映射變量(字典參數(shù))
m.n. m 是顯示的最小總寬度,n 是小數(shù)點(diǎn)后的位數(shù)(如果可用的話)

4.2.6Python三引號(triple quotes)

python中三引號可以將復(fù)雜的字符串進(jìn)行復(fù)制:
python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。
三引號的語法是一對連續(xù)的單引號或者雙引號(通常都是成對的用)。

 >>> hi = '''hi 
there'''
>>> hi   # repr()
'hi\nthere'
>>> print hi  # str()
hi 
there  

三引號讓程序員從引號和特殊字符串的泥潭里面解脫出來,自始至終保持一小塊字符串的格式是所謂的WYSIWYG(所見即所得)格式的。
一個典型的用例是,當(dāng)你需要一塊HTML或者SQL時,這時用字符串組合,特殊字符串轉(zhuǎn)義將會非常的繁瑣。

 errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

4.2.7 Unicode 字符串

Python 中定義一個 Unicode 字符串和定義一個普通字符串一樣簡單:

>>> u'Hello World !'
u'Hello World !'

引號前小寫的"u"表示這里創(chuàng)建的是一個 Unicode 字符串。如果你想加入一個特殊字符,可以使用 Python 的 Unicode-Escape 編碼。如下例所示:

>>> u'Hello\u0020World !'
u'Hello World !'

被替換的 \u0020 標(biāo)識表示在給定位置插入編碼值為 0x0020 的 Unicode 字符(空格符)。

4.2.8 python的字符串內(nèi)建函數(shù)

字符串方法是從python1.6到2.0慢慢加進(jìn)來的——它們也被加到了Jython中。
這些方法實(shí)現(xiàn)了string模塊的大部分方法,如下表所示列出了目前字符串內(nèi)建支持的方法,所有的方法都包含了對Unicode的支持,有一些甚至是專門用于Unicode的。

方法 描述
string.capitalize() 把字符串的第一個字符大寫
string.center(width) 返回一個原字符串居中,并使用空格填充至長度 width 的新字符串
string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
string.decode(encoding='UTF-8', errors='strict') 以 encoding 指定的編碼格式解碼 string,如果出錯默認(rèn)報一個 ValueError 的 異 常 , 除 非 errors 指 定 的 是 'ignore' 或 者'replace'
string.encode(encoding='UTF-8', errors='strict') 以 encoding 指定的編碼格式編碼 string,如果出錯默認(rèn)報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
string.endswith(obj, beg=0, end=len(string)) 檢查字符串是否以 obj 結(jié)束,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是,返回 True,否則返回 False.
string.expandtabs(tabsize=8) 把字符串 string 中的 tab 符號轉(zhuǎn)為空格,tab 符號默認(rèn)的空格數(shù)是 8。
string.find(str, beg=0, end=len(string)) 檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內(nèi),如果是返回開始的索引值,否則返回-1
string.index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在 string中會報一個異常.
string.isalnum() 如果 string 至少有一個字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
string.isalpha() 如果 string 至少有一個字符并且所有字符都是字母則返回 True,否則返回 False
string.isdecimal() 如果 string 只包含十進(jìn)制數(shù)字則返回 True 否則返回 False.
string.isdigit() 如果 string 只包含數(shù)字則返回 True 否則返回 False.
string.islower() 如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,返回 True,否則返回 False
string.isspace() 如果 string 中只包含空格,則返回 True,否則返回 False.
string.isupper() 如果 string 中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True,否則返回 False
string.join(seq) 以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個新的字符串
string.ljust(width) 返回一個原字符串左對齊,并使用空格填充至長度 width 的新字符串
string.lower() 轉(zhuǎn)換 string 中所有大寫字符為小寫.
string.lstrip() 截掉 string 左邊的空格
string.maketrans(intab, outtab]) maketrans() 方法用于創(chuàng)建字符映射的轉(zhuǎn)換表,對于接受兩個參數(shù)的最簡單的調(diào)用方式,第一個參數(shù)是字符串,表示需要轉(zhuǎn)換的字符,第二個參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。
max(str) 返回字符串 str 中最大的字母。
min(str) 返回字符串 str 中最小的字母。
string.partition(str) 有點(diǎn)像 find()和 split()的結(jié)合體,從 str 出現(xiàn)的第一個位置起,把 字 符 串 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()函數(shù),不過是從右邊開始查找.
string.rindex( str, beg=0,end=len(string)) 類似于 index(),不過是從右邊開始.
string.rjust(width) 返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串
string.rpartition(str) 類似于 partition()函數(shù),不過是從右邊開始查找.
string.rstrip() 刪除 string 字符串末尾的空格.
string.split(str="", num=string.count(str)) 以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字符串
string.splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符,如果為 True,則保留換行符。
string.startswith(obj, beg=0,end=len(string)) 檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內(nèi)檢查.
string.strip([obj]) 在 string 上執(zhí)行 lstrip()和 rstrip()
string.swapcase() 翻轉(zhuǎn) string 中的大小寫
string.title() 返回"標(biāo)題化"的 string,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle())
string.translate(str, del="") 根據(jù) str 給出的表(包含 256 個字符)轉(zhuǎn)換 string 的字符,要過濾掉的字符放到 del 參數(shù)中
string.upper() 轉(zhuǎn)換 string 中的小寫字母為大寫
string.zfill(width) 返回長度為 width 的字符串,原字符串 string 右對齊,前面填充0
string.isdecimal() isdecimal()方法檢查字符串是否只包含十進(jìn)制字符。這種方法只存在于unicode對象。

4.3 Python列表

List(列表) 是 Python 中使用最頻繁的數(shù)據(jù)類型。
列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。它支持字符,數(shù)字,字符串甚至可以包含列表(所謂嵌套)。
列表用[ ]標(biāo)識。是python最通用的復(fù)合數(shù)據(jù)類型??催@段代碼就明白。
列表中的值得分割也可以用到變量[頭下標(biāo):尾下標(biāo)],就可以截取相應(yīng)的列表,從左到右索引默認(rèn)0開始的,從右到左索引默認(rèn)-1開始,下標(biāo)可以為空表示取到頭或尾。
加號(+)是列表連接運(yùn)算符,星號(*)是重復(fù)操作。如下實(shí)例:

4.3.1 創(chuàng)建列表

創(chuàng)建一個列表,只要把逗號分隔的不同的數(shù)據(jù)項(xiàng)使用方括號括起來即可。如下所示:

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];

與字符串的索引一樣,列表索引從0開始。列表可以進(jìn)行截取、組合等。

4.3.2 訪問列表中的值

使用下標(biāo)索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符,如下所示:

#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

以上實(shí)例輸出結(jié)果:

list1[0]: physics
list2[1:5]: [2, 3, 4, 5]

4.3.3 更新列表

你可以對列表的數(shù)據(jù)項(xiàng)進(jìn)行修改或更新,你也可以使用append()方法來添加列表項(xiàng),如下所示:

#!/usr/bin/python
list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2];
list[2] = 2001;
print "New value available at index 2 : "
print list[2];

注意:我們會在接下來的章節(jié)討論append()方法的使用
以上實(shí)例輸出結(jié)果:

Value available at index 2 :
1997
New value available at index 2 :
2001

4.3.4 刪除列表元素

可以使用 del 語句來刪除列表的的元素,如下實(shí)例:

#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000];
print list1;
del list1[2];
print "After deleting value at index 2 : "
print list1;

以上實(shí)例輸出結(jié)果:

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

注意:我們會在接下來的章節(jié)討論remove()方法的使用

4.3.5 Python列表腳本操作符

列表對 + 和 * 的操作符與字符串相似。+ 號用于組合列表,* 號用于重復(fù)列表。如下所示:

Python 表達(dá)式 結(jié)果 描述
len([1, 2, 3]) 3 長度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 組合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重復(fù)
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代

4.3.6 Python列表截取

Python的列表截取與字符串操作類型,如下所示:

L = ['spam', 'Spam', 'SPAM!']

Python 表達(dá)式 結(jié)果 描述
L[2] 'SPAM!' 讀取列表中第三個元素
L[-2] 'Spam' 讀取列表中倒數(shù)第二個元素
L[1:] ['Spam', 'SPAM!'] 從第二個元素開始截取列表

操作:

Python 表達(dá)式 結(jié)果 描述
L[2] 'SPAM!' 讀取列表中第三個元素
L[-2] 'Spam' 讀取列表中倒數(shù)第二個元素
L[1:] ['Spam', 'SPAM!'] 從第二個元素開始截取列表

4.3.7 Python列表函數(shù)&方法

Python包含以下函數(shù):

序號 函數(shù) 說明
1 cmp(list1, list2) 比較兩個列表的元素
2 len(list) 列表元素個數(shù)
3 max(list) 返回列表元素最大值
4 min(list) 返回列表元素最小值
5 list(seq) 將元組轉(zhuǎn)換為列表

Python包含以下方法:

序號 函數(shù) 說明
1 list.append(obj) 在列表末尾添加新的對象
2 list.count(obj) 統(tǒng)計(jì)某個元素在列表中出現(xiàn)的次數(shù)
3 list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴(kuò)展原來的列表)
4 list.index(obj) 從列表中找出某個值第一個匹配項(xiàng)的索引位置
5 list.insert(index, obj) 將對象插入列表
6 list.pop(obj=list[-1]) 移除列表中的一個元素(默認(rèn)最后一個元素),并且返回該元素的值
7 list.remove(obj) 移除列表中某個值的第一個匹配項(xiàng)
8 list.reverse() 反向列表中元素
9 list.sort([func]) 對原列表進(jìn)行排序

4.4 Python元組

元組是另一個數(shù)據(jù)類型,類似于List(列表)。
元組用"()"標(biāo)識。內(nèi)部元素用逗號隔開。但是元組不能二次賦值,相當(dāng)于只讀列表。

image.png

4.4.1 創(chuàng)建空元組

tup1 = ();

元組中只包含一個元素時,需要在元素后面添加逗號

tup1 = (50,);

元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取,組合等。

4.4.2 訪問元組

元組可以使用下標(biāo)索引來訪問元組中的值,如下實(shí)例:

#!/usr/bin/python
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]

以上實(shí)例輸出結(jié)果:

tup1[0]: physics
tup2[1:5]: (2, 3, 4, 5)

4.4.3 修改元組

元組中的元素值是不允許修改的,但我們可以對元組進(jìn)行連接組合,如下實(shí)例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
# 以下修改元組元素操作是非法的。
# tup1[0] = 100;
# 創(chuàng)建一個新的元組
tup3 = tup1 + tup2;
print tup3;

以上實(shí)例輸出結(jié)果:

(12, 34.56, 'abc', 'xyz')

4.4.4 刪除元組

元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組,如下實(shí)例:

#!/usr/bin/python
tup = ('physics', 'chemistry', 1997, 2000);
print tup;
del tup;
print "After deleting tup : "
print tup;

以上實(shí)例元組被刪除后,輸出變量會有異常信息,輸出如下所示:

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
File "test.py", line 9, in <module>
print tup;
NameError: name 'tup' is not defined

4.4.5 元組運(yùn)算符

Python 表達(dá)式 結(jié)果 描述
len((1, 2, 3)) 3 計(jì)算元素個數(shù)
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 連接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 復(fù)制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代

與字符串一樣,元組之間可以使用 + 號和 * 號進(jìn)行運(yùn)算。這就意味著他們可以組合和復(fù)制,運(yùn)算后會生成一個新的元組。

Python 表達(dá)式 結(jié)果 描述
len((1, 2, 3)) 3 計(jì)算元素個數(shù)
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 連接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 復(fù)制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代

4.4.6 元組索引,截取

因?yàn)樵M也是一個序列,所以我們可以訪問元組中的指定位置的元素,也可以截取索引中的一段元素,如下所示:

L = ('spam', 'Spam', 'SPAM!')

Python 表達(dá)式 結(jié)果 描述
L[2] 'SPAM!' 讀取第三個元素
L[-2] 'Spam' 反向讀取;讀取倒數(shù)第二個元素
L[1:] ('Spam', 'SPAM!') 截取元素

4.4.7 無關(guān)閉分隔符

任意無符號的對象,以逗號隔開,默認(rèn)為元組,如下實(shí)例:

#!/usr/bin/python
print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;

以上實(shí)例運(yùn)行結(jié)果:

abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2

4.4.8 元組內(nèi)置函數(shù)

Python元組包含了以下內(nèi)置函數(shù)

序號 方法 描述
1 cmp(tuple1, tuple2) 比較兩個元組元素。
2 len(tuple) 計(jì)算元組元素個數(shù)。
3 max(tuple) 返回元組中元素最大值。
4 min(tuple) 返回元組中元素最小值。
5 tuple(seq) 將列表轉(zhuǎn)換為元組。

4.5Python字典

字典(dictionary)是除列表以外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。列表是有序的對象結(jié)合,字典是無序的對象集合。
兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"標(biāo)識。字典由索引(key)和它對應(yīng)的值value組成。


image.png

輸出結(jié)果為:

This isone
This istwo
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

4.5.1 訪問字典里的值

把相應(yīng)的鍵放入熟悉的方括弧,如下實(shí)例:

#!/usr/bin/python 
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; 
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];

以上實(shí)例輸出結(jié)果:

dict['Name']: Zara
dict['Age']: 7

如果用字典里沒有的鍵訪問數(shù)據(jù),會輸出錯誤如下:

#!/usr/bin/python 
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; 
print "dict['Alice']: ", dict['Alice'];

以上實(shí)例輸出結(jié)果:

dict['Alice']: 
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

4.5.2 修改字典

向字典添加新內(nèi)容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實(shí)例:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

以上實(shí)例輸出結(jié)果:

dict['Age']: 8
dict['School']: DPS School

4.5.3 刪除字典元素

能刪單一的元素也能清空字典,清空只需一項(xiàng)操作。
顯示刪除一個字典用del命令,如下實(shí)例:

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

但這會引發(fā)一個異常,因?yàn)橛胐el后字典不再存在:

dict['Age']:
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

注:del()方法后面也會討論。

4.5.4 字典鍵的特性

字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點(diǎn)需要記住:
1)不允許同一個鍵出現(xiàn)兩次。創(chuàng)建時如果同一個鍵被賦值兩次,后一個值會被記住,如下實(shí)例:

#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];

以上實(shí)例輸出結(jié)果:

dict['Name']: Manni

2)鍵必須不可變,所以可以用數(shù)字,字符串或元組充當(dāng),所以用列表就不行,如下實(shí)例:

#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];

以上實(shí)例輸出結(jié)果:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable

4.5.5 字典內(nèi)置函數(shù)&方法

Python字典包含了以下內(nèi)置函數(shù):

序號 函數(shù) 描述
1 cmp(dict1, dict2) 比較兩個字典元素。
2 len(dict) 計(jì)算字典元素個數(shù),即鍵的總數(shù)。
3 str(dict) 輸出字典可打印的字符串表示。
4 type(variable) 返回輸入的變量類型,如果變量是字典就返回字典類型。

Python字典包含了以下內(nèi)置方法:

序號 函數(shù) 描述
1 dict.clear() 刪除字典內(nèi)所有元素
2 dict.copy() 返回一個字典的淺復(fù)制
3 dict.fromkeys(seq[, val])) 創(chuàng)建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應(yīng)的初始值
4 dict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值
5 dict.has_key(key) 如果鍵在字典dict里返回true,否則返回false
6 dict.items() 以列表返回可遍歷的(鍵, 值) 元組數(shù)組
7 dict.keys() 以列表返回一個字典所有的鍵
8 dict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設(shè)為default
9 dict.update(dict2) 把字典dict2的鍵/值對更新到dict里
10 dict.values() 以列表返回字典中的所有值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結(jié)構(gòu)。通常情況下,聲明一個變量只保存一個值是遠(yuǎn)遠(yuǎn)不夠的,我們需要將一組...
    小黑y99閱讀 65,224評論 0 9
  • 1. Numbers(數(shù)字) 數(shù)字?jǐn)?shù)據(jù)類型存儲數(shù)值,他們是不可變的數(shù)據(jù)類型,這意味著一個新分配的數(shù)據(jù)類型的結(jié)果值...
    曉莫莫閱讀 297評論 0 3
  • 本文我們將通過分析用戶狀況及產(chǎn)品使用情況,從用戶角度體驗(yàn)產(chǎn)品,給出分析和改進(jìn)建議,目的是培養(yǎng)產(chǎn)品感覺和為以后產(chǎn)品設(shè)...
    路癡魚閱讀 1,362評論 0 2
  • 不要溫和地走進(jìn)那個良夜白晝將盡,暮年仍應(yīng)燃燒咆哮怒斥吧,怒斥光的消逝 在正在熱映的科幻電影《星際穿越》中,英國詩人...
    李金子閱讀 523評論 0 1