python基礎學習筆記(三)
2013-04-18 00:22 ?蟲師 閱讀( ... ) 評論( ... ) 編輯 收藏?
序列概覽
Python? 包含 6? 種內建的序列,這里重點討論最常用的兩種類型:列表和元組。
列表與元組的主要區別在于,列表可以修改,元組則不能。也就是說如果要根據要求來添加元素,那么列表可以會更好用;而出于某些原因,序列不能修改的時候,使用元組則更為合適。
在操作一組數值的時候,序列很好用。可以用序列表示數據庫中一個人的信息 --- 第一 1 是姓名,第 2 個元素是年齡。根據上述內容編寫一個列表。
>>> hu=[
'
huhu
'
,25]
?
同時,序列也可以包含其他的序列,因此,構建如下一個人員的信息的列表也是可的,這個列表就是你的數據庫:
>>> huhu = [
'
huhu
'
,25
]
>>> chongshi = [
'
chongshi
'
,32
]
>>> database =
[huhu,chongshi]
>>>
database
[[
'
huhu
'
, 25], [
'
chongshi
'
, 32]]
?
?
通用序列操作
所有序列類型都可以進行某些特定的操作。這些操作包括:索引( indexing )、分片( sliceing )、加( adding )、乘( multiplying )以及檢查某個元素是否屬于序列的成員(成員資格)。
?
索引
序列中的所有元素都是有編號的 ----- 從 0? 開始遞增。這些元素可以通過編號分別訪問,如下所示:
>>> greeting =
'
chongshi
'
>>>
greeting[0]
'
c
'
>>> greeting[2
]
'
o
'
?
使用負數索引時, python? 會從右邊,也就是從最后 1 個元素開始計數。最后 1 個元素的位置編號是 -1? (不是 -0 ,?因為那會和第 1 個元素重合):
>>> greeting =
'
chongshi
'
>>> greeting[-1
]
'
i
'
>>> greeting[-2
]
'
h
'
?
當然,我們也可以通過另一種方式使用所引,兩種方式的效果是一樣的:
>>>
'
chongshi
'
[0]
'
c
'
>>>
'
chongshi
'
[-1
]
'
i
'
?
如果一個函數調用返回一個序列,那么可以直接對返回結果進行索引操作。例如,假設只對用戶輸入年份的第 4 個數字感興趣,那么,可以進行如下操作:
>>> fourth = raw_input(
'
year:
'
)[3
]
year:
2013
>>>
fourth
'
3
'
提示:請試著敲擊代碼,更能助幫你理解。不要懶得動手。
?
索引示例:
#
根據給定的年月日以數字形式打印出日期
months =
[
'
January
'
,
'
February
'
,
'
March
'
,
'
April
'
,
'
May
'
,
'
June
'
,
'
July
'
,
'
August
'
,
'
September
'
,
'
October
'
,
'
November
'
,
'
December
'
]
#
以1-31的數字作為結尾的列表
endings = [
'
st
'
,
'
nd
'
,
'
rd
'
]+ 17*[
'
th
'
]\
+[
'
st
'
,
'
nd
'
,
'
rd
'
]+ 7*[
'
th
'
]\
+[
'
st
'
]
year
=raw_input(
'
year:
'
)
month
=raw_input(
'
month(1-12):
'
)
day
=raw_input(
'
day(1-31)
'
)
month_number
=
int(month)
day_number
=
int(day)
#
記得要將月份和天數減1,以獲得正確的索引
month_name = months[month_number-1
]
ordinal
= day + endings[day_number - 1
]
print
month_name +
'
,
'
+ ordinal +
'
,
'
+
year
-----------------------------------------------
輸入:
>>>
year:
2013
month(
1-12):4
day(
1-31)14
輸出:
April ,14th ,
2013
?
分片
與使用索引來訪問單個元素類似,可以使用分片操作來訪問一琮范圍內的元素。分片通過冒號相隔的兩個索引來實現:
>>> tag =
'
Python web site
'
>>> tag[9:30]
#
取第9個到第30個之間的字符
'
http://www.python.org
'
>>> tag[32:-4]
#
取第32到第-4(倒著數第4個字符)
'
Python web site
'
>>>
?
如果求 10 個數最后三個數:
>>> numbers = [0,1,2,3,4,5,6,7,8,9
]
>>> numbers[7:-1]
#
從第7個數到 倒數第一個數
[7, 8]
#
顯然這樣不可行
>>> numbers[7:10]
#
從第7個數到第10個數
[7, 8, 9]
#
這樣可行,索引10指向的是第11個元素。
>>> numbers[7:]
#
可以置空最后一個索引解決
[7, 8, 9
]
>>> numbers[:3
]
[0,
1, 2
]
>>>
numbers[:]
[0,
1, 2, 3, 4, 5, 6, 7, 8, 9]
?
分片示例:
#
對http://fnng.cnblogs.com形式的URL進行分割
url
= raw_input(
'
Please enter the URL:
'
)
domain
= url[11:-4
]
print
"
Domain name:
"
+
domain
------------------------------------------
輸入:
>>>
Please enter the URL:http:
//
fnng.cngblogs.com
輸出:
Domain name:.cngblogs
?
更大步長:
>>> numbers = [0,1,2,3,4,5,6,7,8,9
]
>>> numbers[0:10:1]
#
求0到10之間的數,步長為1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9
]
>>> numbers[0:10:2]
#
步長為2
[0, 2, 4, 6, 8
]
>>> numbers[0:10:3]
#
步長為3
[0, 3, 6, 9]
?
序列相加
通過使用加號可以進行序列的連接操作:
>>>
'
hello.
'
+
'
world!
'
'
hello.world!
'
>>> [1,2,3] +
'
world!
'
Traceback (most recent call last):
File
"
"
, line 1,
in
[
1,2,3] +
'
world!
'
TypeError: can only concatenate list (
not
"
str
"
) to list
?
正如錯誤提示,列表和字符串是無法連接接在一起的,盡管它他們都是序列。簡單來說,兩種相同類型的序列才能進行連接操作。
?
乘法
>>>
'
python
'
* 5
'
python python python python python
'
>>> [25] * 10
[
25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
?
如果想創建一個占用十個元素空間,卻不包括任何有用的內容的列表,可以用 Nome
>>> sequence = [None] * 10
>>>
sequence
[None, None, None, None, None, None, None, None, None, None]
?
序列(字符串)乘法示例:
#
以正確的寬度在居中的“盒子”內打印一個句子
#
注意,整數除法運算符(//)只能用在python 2.2 以及后續版本,在之前的版本中,只能用普通除法(/)
sentence
= raw_input(
"
Sentence :
"
)
screen_width
= 80
text_width
=
len(sentence)
box_width
= text_width + 6
left_margin
= (screen_width - box_width) //2
print
print
'
'
* left_margin +
'
+
'
+
'
-
'
* (box_width - 2)+
'
+
'
print
'
'
* left_margin +
'
|
'
+
'
'
* text_width +
'
|
'
print
'
'
* left_margin +
'
|
'
+ sentence +
'
|
'
print
'
'
* left_margin +
'
|
'
+
'
'
* text_width +
'
|
'
print
'
'
* left_margin +
'
+
'
+
'
-
'
* (box_width - 2)+
'
+
'
---------------------------------------------------------
輸入:
>>>
Sentence : haha! this
is
my box
輸出:
+------------------------+
| |
| haha! this
is
my box |
| |
+------------------------+
?
?
成員資格
?為了檢查一個值是否在序列中,可以使用 in? 運算符。該運算符和之前已經討論過的(例如? +? ,? *? 運算符)有一點不同。這個運算符檢查某個條件為真或假的( True?or?False? )。
in 運算符的例子:
>>> permissions =
'
rw
'
>>>
'
w
'
in
permissions
True
>>>
'
y
'
in
permissions
False
>>> users = [
'
zhangsan
'
,
'
lisi
'
,
'
wangwu
'
]
>>> raw_input(
'
Enter your user name:
'
)
in
users
Enter your user name: lisi
True
>>> subject =
'
$$$ Get rich now!!! $$$
'
>>>
'
$$$
'
in
subject
True
?
長度、最小值和最大值 ?
內建函數 len 、 min? 和 max? 非常有用。 Len 函數返回序列中所包含元素的數量。 Min 函數和 max 函數則分別返回序列中最大和最小的元素。
>>> numbers = [100,34,678
]
>>>
len (numbers)
3
>>>
max(numbers)
678
>>>
min(numbers)
34
>>> max(2,3
)
3
>>> min(9,3,2,5
)
2
?
?
----------------
都是零零碎碎的東西,沒什么難度,打python shell敲擊一下就理解是什么意思了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

