05-列表

列表

特點(diǎn):

1.是有序的
2.可以重復(fù)的
3.可變類型

1.創(chuàng)建和刪除列表

通過 []創(chuàng)建或者 list()函數(shù)轉(zhuǎn)化
list_name=['a', 'b']
list_name = []  # 創(chuàng)建空列表
list_name = list(range(0, 100, 2))  # 通過list函數(shù)轉(zhuǎn)化得到列表
del list_name  # 刪除列表


2.增加列表元素

2. 1 list.append(x):尾部添加單個(gè)元素
ls = []
for each in range(100):
    if each % 2 == 0:
        ls.append(each)


2. 2 list.extend(last_x):尾部添加一個(gè)列表所有元素
ls = [1, 2, 3]
ls_extend = [4, 5, 6]
ls.extend(ls_extend)  # 也可以在中間位置插入一個(gè)列表的所有元素
ls[1:1] = ls_extend


2. 3 list.insert(index, obj):指定位置插入元素
ls = [1, 2, 4]
ls.insert(1, 88)
print(ls)  # out: 1, 88, 2, 4




3.刪除列表元素

3. 1 list.pop([index]):刪除指定index元素途样,默認(rèn)是最后一個(gè),并返回刪除元素

整體返回: 返回pop(),刪除的最后一項(xiàng)數(shù)據(jù)
是否改變?cè)斜? 改變?cè)斜?/p>

ls = [1, 2, 3]
ls.pop(1)  # out: 2


3. 2 list.remove(x):刪除元素
ls = [1, 2, 3]
del ls[2]  # 刪除指定索引列表元素:3
ls.remove(2)  # 移除列表元素:2


3. 3 list.clear():清空列表中的所有元素
ls = [1, 2, 3, 4]
x.clear()  # 清空所有元素


4.修改列表元素

# 通過下標(biāo)修改
ls = [1, 2, 3]
ls[1] = 88
print(ls)  # out: [1, 88, 3]
# 通過切片修改
ls = [1, 2, 3]
ls[0:2] = ["6", "7"]
print(ls)  # out: [6, 7, 3]


5.查找列表元素

5. 1 直接通過下標(biāo)查找
ls = [1, 2, 3]
print(ls[0])  # out:1


5. 2 list.index(v [, begin[, end]]):獲取指定元素的索引號(hào)
ls = [1, 2, 3]
ls.index(2)  # out:1


6.排序缩麸、反轉(zhuǎn)和復(fù)制

6. 1 list.sort(key=None, reverse=False):排序

key用來指定排序規(guī)則辅鲸。reserve = Flase 升序/正向排序(默認(rèn)),True降序/反向排序合敦;函數(shù)本身不會(huì)返回

不傳參數(shù)就默認(rèn)排序,可以傳入一個(gè)函數(shù)作為參數(shù),自定義排序規(guī)則
整體返回: 返回排序的列表
是否改變?cè)斜? 改變?cè)斜?/p>

ls = [1, 3, 8, 2]
ls.sort(key=None, reverse=True)  # out: [8, 3, 2, 1]
'''兩者區(qū)別:sorted方法不會(huì)改變?cè)瓉韑ist,而是會(huì)返回一個(gè)新的已經(jīng)排序好的list'''
ls_1 = [1, 3, 2, 4]
ls_1 = sorted(ls_1, key=None, reverse=True)
print(ls_1)  # out: [4, 3, 2, 1]


6. 2 list.reverse(x):列表元素反轉(zhuǎn)

該方法無須傳參數(shù)
整體返回: 返回翻轉(zhuǎn)后的列表
是否改變?cè)斜? 改變?cè)斜?/p>

ls = [1, 5, 2]
ls.reverse()
print(ls)  # out: [2, 5, 1]


6. 3 list.copy():淺復(fù)制列表
ls = [1, 2, 3, 4]  
ls_copy = ls.copy()  
print(ls_copy)  # out: [1, 2, 3, 4]


7.列表操作函數(shù)

7. 1 min()需五、max()、sum()含衔、len():找最小值族奢、最大值姥闭、求和(元素為數(shù)值型)、長(zhǎng)度
ls = [1, 2, 4]
ls_sum = sum(ls)  # 7
ls_min = min(ls)  # 1
ls_max = max(ls)  # 4
ls_len = len(ls)  # 3


7. 2 list.count(x):獲取列表中元素出現(xiàn)的次數(shù)
ls = [1, 2, 1, 5, 2]
ls.count(2)  # out: 2


7. 3 tuple():將列表轉(zhuǎn)化為元組(元組元素不可變)
ls = [1, 2, 3]
tup = tuple(ls)
print(tup)  # out: (1, 2, 3)


8.列表切片

方法list[ start : end : step ]
start :切片的起始位置
end :是切片的結(jié)束位置(不包括)
step :可以不提供越走,默認(rèn)值是1棚品,步長(zhǎng)值不能為0,不然會(huì)報(bào)錯(cuò)ValueError廊敌。步長(zhǎng)是正數(shù)铜跑,從左往右取骡澈;步長(zhǎng)是負(fù)數(shù)锅纺,從右往左取。

出現(xiàn)情況:
①list[start : end] 切片是不包含后面那個(gè)元素的值(顧頭不顧尾)
②list[ : end] 如果切片前面一個(gè)值缺省的話肋殴,從開頭開始取
③list[start : ] 如果切片后面的值缺省的話囤锉,取到末尾
④list[ : ] 如果全部缺省,取全部
⑤list[start : end : step]

  • 如果第一個(gè)索引是0护锤,還可以省略
ls = [1, 2, 4, 7, 88]
var = ls[:2]
print(var)  # out:[1, 2]
  • 支持負(fù)數(shù)
ls = [1, 2, 4, 7, 88]
a = ls[-1]  # out: 88
b = ls[:-1]  # out: [1, 2, 4, 7]
c = ls[:-2:]  # out: [1, 2, 4]
d = ls[-2:]  # out: [7, 88]
e = ls[-2:-1]  # out: [7]
f = ls[::-1]  # out:[88, 7, 4, 2, 1]
print(a, b, c, d, e, f) 
  • 拓展:二維列表及其切片
a=[['a', 'b', 'c'], [1, 2, 3]]
a[1][2]  # out: 3


9.列表推導(dǎo)式

[expression for var in list]
a =[1, 3, 5, 6, 9] 
b = [x**2 for x in a]
print(b)  # out: [1, 9, 25, 7, 10]

def f(data):
    return data + 1
b = [f(x) for x in a]  # 使用自定義函數(shù)
print(b)  # out: [2, 4, 6, 7, 10]
[expression for var in list if condition]
a =[1, 3, 5, 6, 9] 
b = [x**2 for x in a if x > 3]
[expression if condition else expression for var in list]
a =[1, 3, 5, 6, 9]
b = ['奇數(shù)' if x%2 != 0 else '偶數(shù)' for x in a]
[x for a in b for x in a]:二維列表推導(dǎo)式應(yīng)用
'''對(duì)列表中元素為列表的所有子元素求和'''
l = [[1, 2], 1, [1, 2, 3], 4, [6, 7]]
s = sum([x for y in l if isinstance(y, list) for x in y])

'''我們把列表推導(dǎo)式展開官地,這樣獲取變得好結(jié)構(gòu)清楚些'''
def list_expend():
    ls = []
    for y in l:
        if isinstance(y, list):
            for x in y:
                ls.append(x)
    return ls


10.列表拆包

某些情況下,我們可能需要取列表中的幾個(gè)值烙懦,這樣我們可以使用了列表切片來逐一賦值驱入,此外我們還可以使用‘*’列表拆包一步到位。

prop = ['張三', '男', '70kg', 18, '178cm']
'''我們獲取列表中的姓名和性別元素'''
name,sex = prop
print(name,sex)  # out: ('張三', '男')
'''姓名氯析,年齡亏较,身高'''
name,age,height = prop
print(name,age,height)  # out: ('張三', 18, '178cm')
'''成績(jī):去除最大值最小值='''
grade = [80, 75, 23, 100, 85]
grade_valid = sorted(grade) 
print(grade_valid)  # out: [75, 80, 85]


11.slice()截取方法

通過slice(start, end)(在原有列表中竊取新列表)生成可切片對(duì)象,賦值給變量掩缓,很多時(shí)候往往使得代碼可讀性更好

start : 截取列表開始的下標(biāo);
end: 截取列表結(jié)束時(shí)的下標(biāo),竊取的列表不包含這個(gè)下標(biāo)對(duì)應(yīng)的內(nèi)容;若end參數(shù)省略,將截取從start開始的剩余所有內(nèi)容宴杀。

整體返回:返回截取后的新列表
是否改變?cè)斜?不改變?cè)斜?/p>

dt = '20190714'
year = slice(0, 4)  # 生成切片對(duì)象slice
print(dt[year])  # '2019'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拾因,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖绢记,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扁达,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蠢熄,警方通過查閱死者的電腦和手機(jī)跪解,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來签孔,“玉大人叉讥,你說我怎么就攤上這事〖⒆罚” “怎么了图仓?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)但绕。 經(jīng)常有香客問我救崔,道長(zhǎng),這世上最難降的妖魔是什么捏顺? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任六孵,我火速辦了婚禮,結(jié)果婚禮上幅骄,老公的妹妹穿的比我還像新娘劫窒。我一直安慰自己,他們只是感情好拆座,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布主巍。 她就那樣靜靜地躺著,像睡著了一般懂拾。 火紅的嫁衣襯著肌膚如雪煤禽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天岖赋,我揣著相機(jī)與錄音檬果,去河邊找鬼。 笑死唐断,一個(gè)胖子當(dāng)著我的面吹牛选脊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脸甘,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼恳啥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了丹诀?” 一聲冷哼從身側(cè)響起钝的,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤翁垂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后硝桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沿猜,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年碗脊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啼肩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衙伶,死狀恐怖祈坠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矢劲,我是刑警寧澤赦拘,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站卧须,受9級(jí)特大地震影響另绩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜花嘶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一笋籽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椭员,春花似錦车海、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至埋同,卻和暖如春州叠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凶赁。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工咧栗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虱肄。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓致板,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親咏窿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斟或,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355