Python之列表list模組

2021-10-11 15:42:54 字數 3709 閱讀 9022

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...