2)extend在列表的最後新增;如果為可迭代元素, 則把可迭代元素分開新增到列表
3)預設刪除列表中的最後乙個元素pop,也可以根據元素的位置刪除列表元素
4)remove根據列表值的內容刪除某個列表元素
5)reverse反轉列表
6)給列表排序sort
1、判斷乙個 list 是否為空
傳統的方式:
if len(mylist):
# do something with my list
else:
# the list is empty
由於乙個空 list 本身等同於 false,所以可以直接:
if mylist:
# do something with my list
else:
# the list is empty
2、遍歷 list 的同時獲取索引
傳統的方式:
i = 0
for element in mylist:
# do something with i and element
i += 1
這樣更簡潔些:python提供了乙個內建的enumerate函式,可以把乙個list變成索引-元素對,這樣就可以做到在for迴圈中迭代索引和元素本身。
for i, element in enumerate(mylist):
# do something with i and element
pass
3、list 排序
在包含某元素的列表中依據某個屬性排序是乙個很常見的操作。例如這裡我們先建立乙個包含 person 的 list:
class person(object):
def __init__(self, age):
self.age = age
persons = [person(age) for age in (14, 78, 42)]
傳統的方式是:
def get_sort_key(element):
return element.age
for element in sorted(persons, key=get_sort_key):
print "age:", element.age
更加簡潔、可讀性更好的方法是使用 python 標準庫中的 operator 模組:
from operator import attrgetter
for element in sorted(persons, key=attrgetter('age')):
print "age:", element.age
attrgetter 方法優先返回讀取的屬性值作為引數傳遞給 sorted 方法。operator 模組還包括 itemgetter 和 methodcaller 方法,作用如其字面含義。
4、list解析
python有乙個非常有意思的功能,就是list解析,就是這樣的:
>>> squares = [x**2 for x in range(1,10)]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81]
看到這個結果,看官還不驚嘆嗎?這就是python,追求簡潔優雅的python!
其官方文件中有這樣一段描述,道出了list解析的真諦:
還記得前面一講中的那個問題嗎?
找出100以內的能夠被3整除的正整數。
我們用的方法是:
aliquot =
for n in range(1,100):
if n%3 == 0:
print aliquot
好了。現在用list解析重寫,會是這樣的:
>>> aliquot = [n for n in range(1,100) if n%3==0]
>>> aliquot
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
震撼了。絕對牛x!
其實,不僅僅對數字組成的list,所有的都可以如此操作。請在平復了激動的心之後,默默地看下面的**,感悟一下list解析的魅力。
>>> [one.strip() for one in mybag] #去掉元素前後的空格
5、enumerate
這是乙個有意思的內建函式,本來我們可以通過for i in range(len(list))的方式得到乙個list的每個元素編號,然後在用list[i]的方式得到該元素。如果要同時得到元素編號和元素怎麼辦?就是這樣了:
>>> for i in range(len(week)):
... print week[i]+' is '+str(i) #注意,i是int型別,如果和前面的用+連線,必須是str型別
...
monday is 0
sunday is 1
friday is 2
python中提供了乙個內建函式enumerate,能夠實現類似的功能
>>> for (i,day) in enumerate(week):
... print day+' is '+str(i)
...
monday is 0
sunday is 1
friday is 2
算是乙個有意思的內建函式了,主要是提供乙個簡單快捷的方法。
官方文件是這麼說的:
return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. the next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence:順便抄錄幾個例子,供看官欣賞,最好實驗一下。
>>> seasons = ['spring', 'summer', 'fall', 'winter']
>>> list(enumerate(seasons))
[(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'spring'), (2, 'summer'), (3, 'fall'), (4, 'winter')]
Python容器之列表 list
列表的定義 列表是一種容器 通常用來儲存計算機的資料物件 列表是可以被改變的序列 列表是由一系列特定的元素組成的,元素與元素之間可能沒有 任何的關聯關係,但他們之間也有先後順序關係l l繫結空列表l 1,2,3,4 l 北京 上海 深圳 西安 l 1,one 3.14,四 ture l 1,2,3....
python基礎之列表(list)
元素1,元素2,元素3,元素型別可以彼此不同,十分方便 可以巢狀序列資料型別 a abc 123,1,2,3 4,5,6 b 1,2,3,4,5,6 正序是0到len list 或者是 len list 1到 1 b 0 1 b 2 3 b 1 6 b 1 3 切片時區間為左閉右開 2,3 max ...
Python之列表list新增元素
person dev group 徐強 倍總 航神 說明 index值可以為正數 也可以為負數,甚至可以超出list的下標範圍,超出範圍情況將在list的尾部新增乙個元素 person dev group.insert 1,大牛 說明 extend 接收的引數必須為可迭代物件,所有元素會新增到lis...