在python中,最基本的資料結構是序列,
序列包含:
其他的內建序列型別有:
一、通用序列操作
所有的序列型別都可以進行某些特定的操作。這些操作包括:索引、分片、加、乘及檢查某個元素是否屬於序列的成員。
1.1 索引
>>> name = 'hongxue'
>>> name[0]
'h'>>> name[0:3]
'hon'
這就是索引,字串是乙個由字元組成的序列。索引0指向第1個元素,在當前例子中就是h
可以通過索引獲取元素
>>> str = raw_input('year: ')[3]
year:2015
>>> str
'5'
1.2 分片
索引是訪問單個元素,分片與索引類似,但是它來訪問的是一定範圍內的元素,分片通過冒號隔開的兩個索引實現:
分片操作對於提取序列的一部分是很有用的。而編號在這裡顯得尤為重要。第1個索引是要提取的第1個元素的編號,而最後的索引則是分片之後剩餘部分的第1元素的編號。
(1) 優雅的捷徑
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[0:3]
[1,2,3]
>>> numbers[3:8]
[4,5,6,7,8]
>>> numbers[2:7]
[3,4,5,6,7]
numbers[-3:-1]
[8,9]
numbers[-3:]
[8,9,10]
numbers[:3]
[1,2,3]
numbers[:]
[1,2,3,4,5,6,7,8,9,10]
分片示例:
>>> name = raw_input('please input your name:')[0:4]
please input your name:hongxue
>>>
print name
'hong'
(2) 更大的步長
進行分片的時候,分片的開始和結束點需要進行指定(不管是直接還是間接)。而另外乙個引數–步長通常都是隱式設定的。預設為1,則可以手動進行設定
>>> print
numbers
[:][1,2,3,4,5,6,7,8,9,10]
>>> numbers
[0:10:2]
[1,3,5,7,9]
>>> numbers
[3:6:3]
[4]>>> numbers
[::4]
[1,5,9]
當然,步長可以是負數,此時分片從右到左提取
>>> numbers
[8:3:-1]
[9,8,7,6,5]
>>> numbers
[10:0:-2]
['10,8,6,4,2']
>>> numbers
[::-2]
[10,8,6,4,2]
>>> numbers
[5::-2]
[6,4,2]
>>> numbers
[:5:-2]
[10,8]
對於乙個正數步長,python會從序列的頭部開始向右提取元素,直到最後乙個元素,
對於乙個負數步長,python會從序列的尾部開始向左提取元素,直到第乙個元素。
1.3 序列相加
通過使用加運算子可以進行序列的連線操作:
>>> [1,2,3] + [4,5,6]
[1,2,3,4,5,6]
>>> x = ['hong']
>>> y = ['xue']
>>> x + y
['hong','xue']
當然,列表和字串是無法連線在一起的,儘管它們都是序列。
兩種型別相同的序列才能進行連線操作,例如:
>>> x = '123'
>>> y = ['4,5,6']
>>> x + y
traceback (most recent call last):
file "", line 1, in
typeerror: cannot concatenate 'str'
and'list' objects
1.4 乘法
用數字x乘以乙個序列會生成新的序列,而在新的序列中,原來的序列將被重複n次
>>>
'python' * 5
'pythonpythonpythonpythonpython'
>>> [30] * 10
'30,30,30,30,30,30,30,30,30,30'
none、空列表和初始化
空列表可以簡單的通過兩個中括號進行表示,裡面什麼也沒有。但是,如果想建立乙個占用十個元素空間,卻不包括任何有用內容的列表,可以想前面那樣,[42] * 10,這樣會更加實際一些。然而,有時候可能會需要乙個值來代表空值—意味著裡面沒有任何東西,這個時候就需要用到none,none是python的內鍵值,它的確切含義是」這裡什麼也沒有」。
建立占用十個元素的空間
>>> * 10
建立乙個空值
>>> value = [none] * 10
>>> value
[none,none,none,none,none,none,none,none,none,none]
**清單 序列(字串)乘法表示
sentence = raw_input('sentence: ')
screen_width =80
text_width = len(setence)
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) + '+'
print
1.5 成員資格
為了檢查乙個值是否在序列中,可以使用in運算子,這個運算子檢查某個條件是否為真,然後返回相應的值,也叫做』布林值』
條件為真返回true
條件為假返回false
>>> permissions='rw'
>>>
'r'in permissions
>>>
'w'in permissions
>>>
'x'in permissions
#檢查使用者是否在name列表中
>>> name = ['hongxue','xiaomao','yixiao']
>>>
'hongxue'
in name
>>>
'xiaomao'
in name
#檢查使用者名稱和pin碼
>>> database = [['hongxue','123'],['yixiao','456'],['xiaomao','789']]
>>> username = raw_input('user name: ')
>>> pin = raw_input('pin code: ')
>>>
if [username,pin] in database : print
'access granted'
1.6 長度、最小值和最大值
內建函式len、min和max非常有用
len函式返回序列中所包含元素的數量
min函式返回序列中最小的元素
max函式返回序列中最大的元素
numbers = [456,214,999]
>>> len(numbers) #返回元素個數
3>>> min(numbers) #返回最小元素
214>>> max(numbers) #返回最大元素
999
python 列表和元祖
count item 表示統計列表 元組中 item 出現的次數。l 1,2,3,4,item 45,item print l print l 0 l 3 99 print l print l.count item index item 表示返回列表 元組中 item 第一次出現的索引。l 1,2,...
python之列表和元祖
python之列表和元祖 資料結構是通過某種方式 例如對元素進行編號 組織在一起的資料元素的集合,這些元素不僅是數字元素還可以是其他的資料結構。在python中最基本的資料結構是序列 sequence 序列中的每個元素都會分配乙個序號就像是每位同學都有學號一樣。這個序號代表著這個元素的位置,從0開始...
python 列表 元祖和字典
一 列表迴圈 names 哈哈 嘿嘿 while false i 0 元素下標 while i 如圖 for 迴圈做法 1.for i in range len names print names i 2.for i in names print i 1,2,5,7 是 以split 來分割,返回值...