Example 3.6 Defining a List
>>>
?li?
=
?[
"
a
"
,?
"
b
"
,?
"
mpilgrim
"
,?
"
z
"
,?
"
example
"
]
>>>
?li
[
'
a
'
,?
'
b
'
,?
'
mpilgrim
'
,?
'
z
'
,?
'
example
'
]
>>>
?li[0]
'
a
'
>>>
?li[
4
]
'
example
'
1、list的元素是有序的
2、list可以當成數組來用,元素下標從0開始

Example 3.7 Negative List Indices
>>>?li
['a',?'b',?'mpilgrim',?'z',?'example']
>>>?li[?1]
'example'
>>>?li[?3]
'mpilgrim'3、list的索引可以是負數,表達式L[n]的含義為:
(1)當0 <= n <= len(L)-1 時, 跟java、C中的數組元素索引一樣
(2)當-len(L) <= n <= -1 時, L[n] = L[len(L)+n]
(3)n不再上述范圍內是,程序引發IndexError

Slicing a list
li?=?['a',?'b',?'String',?'list',?'dictionary']
print?li[0:3]
print?li[:]
print?li[:3]
print?li[1:]
print?li[0:7]?#?won't?cause?IndexError
print?li[-2:-1]?#?identical?to?li[len(li)-2?:?len(li)-1]=li[3:4]
print?li[-1:-2]?#?identical?to?li[4:3],?so?it?will?return?a?empty?list
print?li[-125:1159]運行結果:

運行結果
['a',?'b',?'String']
['a',?'b',?'String',?'list',?'dictionary']
['a',?'b',?'String']
['b',?'String',?'list',?'dictionary']
['a',?'b',?'String',?'list',?'dictionary']
['list']
[]
['a',?'b',?'String',?'list',?'dictionary']
4、L[a:b](其中a,b為整數)表示一個分片操作,注意a,b可以是任意的整數,而且分片操作永遠不會引發IndexError。但是a,b取不同的值時,程序行為稍有不同。
(1)當 0 <= a < b < len(L)時,L[a:b]返回一個由L[a], L[a+1]...L[b-1]組成的list
(2)當 0 <= b <= a < len(L)時,L[a:b]返回空的list
(3)當a,b取值不在上述范圍時,應用以下4條規則替換a,b的值,得到a,b新的值后再應用上面兩條規則。
- 若 a >= len(L), 則 a = len(L)-1
- 若 -len(L) <= a < 0, 則 a = len(L) + a
- 若 a <? -len(L), 則? a =? 0
- b的情況跟a一樣
- 當 a沒有指定時,a = 0, 當b沒指定時,b=len(L)-1
5、append和extend方法的不同,看下例就一目了然了。

the difference between extend and append
>>>?li?=?['a',?'b',?'c']
>>>?li.extend(['d',?'e',?'f'])
>>>?li
['a',?'b',?'c',?'d',?'e',?'f']
>>>?len(li)
6
>>>?li[?1]
'f'
>>>?li?=?['a',?'b',?'c']
>>>?li.append(['d',?'e',?'f'])
>>>?li
['a',?'b',?'c',?['d',?'e',?'f']]
>>>?len(li)
4
>>>?li[?1]
['d',?'e',?'f'注意 extend的參數不僅僅可以是list,也可以是一個tuple, dictionary等可以iterable的數據結構
6、
List object methods
Method | Description |
---|
Nonmutating methods | ? |
L.count(x) | Returns the number of items of L that are equal
to x. |
L.index(x) | Returns the index of the first occurrence of an item in
L that is equal to x, or raises an exception if
L has no such item. |
Mutating methods | ? |
L.append(x) | Appends item x to the end of L
; e.g.,
L[len(L):]=[x]. |
L.extend(s) | Appends all the items of iterable s to the end
of L; e.g.,
L[len(L):]=s. |
L.insert(i, x) | Inserts item x in L before the
item at index i, moving following items of L (if
any) "rightward" to make space (increases
len(L) by one, does not replace any item, does
not raise exceptions: acts just like
L[i:i]=[x]). |
L.remove(x) | Removes from L the first occurrence of an item
in L that is equal to x, or raises an exception
if L has no such item. |
L.pop([i]) | Returns the value of the item at index i and
removes it from L; if i is omitted, removes and
returns the last item; raises an exception if L is empty or
i is an invalid index in L. |
L.reverse( ) | Reverses, in place, the items of
L. |
L.sort([f])
(2.3) | Sorts, in place, the items of L, comparing
items pairwise via function f; if f is omitted,
comparison is via the built-in function cmp. For more details, see "Sorting a list" on page
57. |
L.sort(cmp=cmp, key=None,
reverse=False)(2.4) | Sorts, in-place, the items of L, comparing
items pairwise via the function passed as cmp (by default, the
built-in function cmp). When argument key is not
None, what gets compared for each item x is
key(x), not x
itself. For more details, see "Sorting a list" on page
57. |
7、

List Operators
>>>?li?=?['a',?'b',?'mpilgrim']
>>>?li?=?li?+?['example',?'new']
>>>?li
['a',?'b',?'mpilgrim',?'example',?'new']
>>>?li?+=?['two']
>>>?li
['a',?'b',?'mpilgrim',?'example',?'new',?'two']
>>>?li?=?[1,?2]?*?3
>>>?li
[1,?2,?1,?2,?1,?2]注意下面的例子:

Another Example
li?=?['a']
print?li
#li?=?li?+?'b'??TypeError:?can?only?concatenate?list?(not?"str")?to?list
li?+=?'b'
print?li
li?=?li?*?2??????????????????????
print?li
li?*=?2
print?li運行結果:

運行結果
['a']
['a',?'b']
['a',?'b',?'a',?'b']
['a',?'b',?'a',?'b',?'a',?'b',?'a',?'b']