day7_列表

前言回顧

1.字符串1.count(字符串2) -> 統(tǒng)計在字符串1中字符串2出現(xiàn)的次數(shù)

print('absfhsjdfh'.count('abs'))

2.字符串1.find(字符串2) -> 返回字符串2在字符串1中第一次出現(xiàn)的下標(0~長度-1的下標)奸腺;找不到返回-1

str1 = 'how are you ! fine,and you'
print(str1.find('you'))

字符串1.find(字符串2, startindex, endindex)  ->  指定范圍內(nèi)查找(找不到返回-1)
print(str1.find('you', 10, 15))

# .index和.find()方法一樣,但是找不到程序會有異常

3.字符串.join(序列) - 將序列中元素取出來蝙搔,中間用指定字符串拼接在一起產(chǎn)生一個新的字符串
!!! 序列必須是字符串躺孝,不可以是數(shù)字

new_str = '*'.join('abc')
print(new_str)

new_str = ','.join(['name', 'age', 'xiaoming'])  # 注意序列
print(new_str)

4.max(str) 和 min(str)
max(序列)窘拯,min(序列)

print(max('afkslfzds的sf'))
print(min('dfdsjfdfs'))

5.字符串.replace(old, new) - 將字符串中指定的舊字符串全部替換成新的字符串就乓,默認替換所有的子字符串
字符串.replace(old, new, max) - max為替換次數(shù)

str1 = 'how are you ! fine,and you'
new_str = str1.replace('you', 'me')
print(new_str)

6.字符串1.split(字符串2) - 將字符串按照字符串2進行切割,返回的是列表
切割后返回的是一個列表

str1 = 'how are you ! fine,and you'
result = str1. split(' ')
print(result)

字符串.swapcase() - 將字符串中大寫轉(zhuǎn)為小寫稿黍,將小寫轉(zhuǎn)為大寫
字符串.title() - 將字符串轉(zhuǎn)為title類型(title類型疹瘦,即為首字母大寫,其余小寫的標題格式)

列表

1.什么是列表(list)

列表是python提供的容器型數(shù)據(jù)類型(序列)闻察,可變拱礁、有序
可變(元素的個數(shù)琢锋、值和順序可變) - 支持增刪改
有序 - 支持下標操作

2.列表數(shù)據(jù):[元素1,元素2,元素3,...]

元素:
1.可以是任何類型的數(shù)據(jù)(值辕漂、賦值后的變量、除了賦值符以外的其他運算表達式)
2.一個列表中可以同時存在多種數(shù)據(jù)類型

list1 = [10, 12.0, True, 'abc', [1, 2], (1, 2), {'a': 10}, lambda x: x*2]
print(list1)

num = 10
list2 = [num, num*10+2, 'abc'.count('a')]
print(list2)

3.列表元素的操作

3.1 查 - 獲取列表中的元素

  1. 獲取單個元素
語法:列表[下標]  -  獲取列表中指定下標對應的元素(返回值就是對應的元素)

注意:下標不能越界
下標: 0 ~ 長度-1 吴超;-1 ~ -長度
names = ['路飛', '鳴人', '佐助', '索羅', 100]
print(names[1])
print(names[-1], type(names[-1]))
  1. 獲取部分元素(切片) 結(jié)果是列表(和字符串類似)
列表[開始下標:結(jié)束下標:步長]
print(names[1:-1])  # ['鳴人', '佐助', '索羅']
list2 = names[-1:1]  # []
print(list2)

list2 = names[-1:1:-1]  # [100, '索羅', '佐助']
print(list2)

print(names[:3])  # ['路飛', '鳴人', '佐助']
print(names[:3:-1])  # [100]

# 最常用兩種方式
print(names[:])
print(names[::-1])
  1. 遍歷
for 變量 in 列表:
    循環(huán)體

變量直接取到的是列表中的每個元素
names = ['路飛', '鳴人', '佐助', '索羅']

# 直接遍歷元素
for item in names:
    print(item)

# 遍歷下標
for index in range(len(names)):
    print(names[index])

補充:isinstance

isinstance(數(shù)據(jù)钉嘹, 類型)  -  判斷指定的數(shù)據(jù)是否是指定的類型
print(isinstance(100.0, int))  # False

練習:統(tǒng)計一個列表中整型元素的個數(shù)

list3 = [23, 78.2, 'asgs', [12, 3], 290]
count = 0
for item in list3:
    if isinstance(item, int) :
        count += 1
print(count)

列表元素的操作 (都是在原列表的基礎(chǔ)上操作的)

1. 增 - 添加元素

  1. 列表.append(元素) - 在列表最后添加一個元素(修改原列表,不會產(chǎn)生新的列表)
films = ['復聯(lián)4', '指環(huán)王', '綠皮書', '你的名字', '千與千尋']
result = films.append('肖生克的救贖')
print(films, result)  # none 表示列表不存在
  1. 列表.insert(下標, 元素) - 在列表中指定下標[前]添加指定元素
films.insert(2, '沉默的羔羊')
print(films)

練習1:有一個有序的數(shù)字列表鲸阻,輸入一個數(shù)跋涣,將這個數(shù)插入到列表中,要求插入后不改變排列方式

# [1, 12, 32, 45, 60]
# 輸入3:[1, 3, 12, 32, 45, 60]
numbers = [1, 12, 32, 45, 60]
num = int(input('請輸入一個數(shù):'))
for index in range(len(numbers)):
    if num < numbers[index]:
        numbers.insert(index, num)
        break
else:
    numbers.append(num)
print(numbers)

2.刪 - 刪除列表中的元素 (在原列表的基礎(chǔ)上操作鸟悴,不會產(chǎn)生新列表)

  1. del 列表[下標] - 刪除列表中指定下標對應的元素
    下標范圍 0 ~ 長度-1陈辱;-1 ~ -長度 下標不能越界!细诸!
films = ['復聯(lián)4', '指環(huán)王', '綠皮書', '你的名字', '千與千尋']
del films[1]
print(films)

del films[-1]
print(films)

# 下標不能越界
# del films[100]   # IndexError: list assignment index out of range
  1. 列表.remove(元素) - 刪除列表中指定的元素
注意:1.如果需要刪除的元素在列表中有多個沛贪,只刪最前面一個
      2.不能刪除列表中不存在的元素了,否則程序會報錯
films = ['復聯(lián)4', '指環(huán)王', '綠皮書', '指環(huán)王', '你的名字', '千與千尋']
# films.remove('指環(huán)王2')   # ValueError: list.remove(x): x not in list
films.remove('指環(huán)王')
print(films)
  1. 列表.pop()
列表.pop()  -  取出列表中最后一個元素
列表.pop(下標)  -  取出列表中指定下標對應的元素
films = ['復聯(lián)4', '指環(huán)王', '綠皮書', '你的名字', '千與千尋']
del_value = films.pop()
print(films, del_value)

del_value = films.pop(0)
print(films, del_value)

練習:刪除列表中成績所有低于60的成績

# 錯誤示例:
scores = [70, 45, 50, 87, 90, 67, 30, 100]
count = 0
for index in range(len(scores)):
    if scores[index-1] < 60:
        del scores[index]
print(scores)
坑1:下標越界
scores = [70, 45, 50, 87, 67, 30, 100]
index = 0 ~ 6
index = 0; 70 < 60
index = 1; 45 < 60; del scores[1]; scores = [70, 50, 87, 67, 30, 100]
index = 2; 87 < 60
index = 3; 67 < 60
index = 4; 30 < 60; del scores[4]; scores = [70, 50, 87, 67, 100]
index = 5; scores[5] -> 越界

解決坑1:下標從后往前取

scores = [70, 45, 50, 87, 67, 30, 100]
index = 6 ~ 0
index = 6; 100 < 60
index = 5; 30 < 60; del scores[5]; scores = [70, 45, 50, 87, 67, 100]
index = 4; 67 < 60;
index = 3; 87 < 87;
index = 2; 50 < 60; del 2; [70, 45, 87, 67, 100]
index = 1; 45 < 60; del 1; [70, 87, 67, 100]
index = 0; 70 < 60
scores = [70, 45, 50, 87, 90, 67, 30, 100]
for index in range(len(scores)-1, -1, -1):
    if scores[index] < 60:
        del scores[index]
print(scores)

解決坑1:使用while循環(huán)控制下標在不刪除的時候加1震贵,刪除的時候不變

[70, 45, 50, 87, 67, 30, 100]
index = 0, 70
index = 1, 45    [70, 50, 87, 90, 67, 30, 100]
index = 1, 50    [70, 87, 90, 67, 30, 100]
index = 1, 87
index = 2, 67
index = 3, 30    [70, 87, 90, 67, 100]
index = 3, 100
scores = [70, 45, 50, 87, 67, 30, 100]
index = 0
while index < len(scores):
    if scores[index] < 60:
        del scores[index]
        continue
    index += 1
print(scores)

坑2:直接獲取列表元素

scores = [70, 45, 50, 87, 67, 30, 100]
for score in scores:
    if score < 60:
        scores.remove(score)
print(scores)
scores = [70, 45, 50, 87, 67, 30, 100]
(index = 0 ~ 6)
(0)score = 70
(1)score = 45; 45<60; [70, 50, 87, 67, 30, 100]
(2)score = 87;
(3)score = 67;
(4)score = 30; 30<60; [70, 50, 87, 67, 100]
(5) 異常

解決坑2:

scores = [70, 45, 50, 87, 67, 30, 100]
temp = scores[:]  # 不可以直接賦值利赋,即不可以 temp = scores,不然兩者共享相同的存儲空間,改變元素會相互影響
for score in temp:
    if score < 60:
        scores.remove(score)
print(scores)

上面可以簡寫為如下:

scores = [70, 45, 50, 87, 67, 30, 100]
for score in scores[:]:
    if score < 60:
        scores.remove(score)
print(scores)
!!!注意:遍歷刪除的時候需要考慮這兩個坑猩系!

3.改 - 修改元素的值

列表[下標] = 新值 - 修改指定下標對應的元素為新值
!!!注意:下標不能越界

balls = ['乒乓球', '籃球', '足球', '排球']
balls[1] = '羽毛球'
print(balls)

scores = [70, 45, 50, 87, 67, 30, 100]
for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = '不及格'
print(scores)

1.列表運算符

  1. 數(shù)學運算:+媚送,*
    列表1 + 列表2 -> 將兩個列表中的元素合并產(chǎn)生一個新的列表
new_list = ['a', 'b', 'c'] + [1, 2, 3]
print(new_list)

列表1 * N -> 列表中的元素重復N次產(chǎn)生一個新的列表

print([1, 2, 3] * 3)
  1. 比較運算:==, != (一般不比較大小,因為沒什么意義)
    列表是有序的
print([1, 2, 3] == [1, 3, 2])  # False

集合是無序的

print({1, 2, 3} == {1, 3, 2})  # True

2.in/ not in

元素 in 列表 -> 判斷列表中是否包含指定的[元素]

print([1, 2] in [1, 2, 3, 5])  # False
print([1, 2] in [1, 2, 3, 5, [1, 2]])  # True

3.len(列表) -> 獲取列表中元素的個數(shù)

4.list(數(shù)據(jù)) -> 將指定數(shù)據(jù)轉(zhuǎn)換成列表

所有的[序列]都可以轉(zhuǎn)換成列表寇甸;將序列中的元素作為列表元素
非序列不可以
# print(list(100))  # TypeError: 'int' object is not iterable
print(list('hello world!'))
print(list(range(20, 39)))

5. max/min

max(列表)  -  獲取列表中元素的最大值
min(列表)  -  獲取列表中元素的最小值
注意:1.列表中元素的類型必須一致 
      2.數(shù)據(jù)支持比較運算符
# 錯誤示例:max([129, 'as', 3, 'ahs'])
print(max([129, 99, 3, -2]))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末塘偎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拿霉,更是在濱河造成了極大的恐慌吟秩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件友浸,死亡現(xiàn)場離奇詭異峰尝,居然都是意外死亡,警方通過查閱死者的電腦和手機收恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門武学,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祭往,“玉大人,你說我怎么就攤上這事火窒∨鸩梗” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵熏矿,是天一觀的道長已骇。 經(jīng)常有香客問我,道長票编,這世上最難降的妖魔是什么褪储? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮慧域,結(jié)果婚禮上鲤竹,老公的妹妹穿的比我還像新娘。我一直安慰自己昔榴,他們只是感情好辛藻,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著互订,像睡著了一般吱肌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仰禽,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天氮墨,我揣著相機與錄音,去河邊找鬼坟瓢。 笑死勇边,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的折联。 我是一名探鬼主播粒褒,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诚镰!你這毒婦竟也來了奕坟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤清笨,失蹤者是張志新(化名)和其女友劉穎月杉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抠艾,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡苛萎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腌歉。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛙酪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翘盖,到底是詐尸還是另有隱情桂塞,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布馍驯,位于F島的核電站阁危,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏汰瘫。R本人自食惡果不足惜狂打,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吟吝。 院中可真熱鬧菱父,春花似錦颈娜、人聲如沸剑逃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹磺。三九已至,卻和暖如春同仆,著一層夾襖步出監(jiān)牢的瞬間萤捆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工俗批, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俗或,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓岁忘,卻偏偏與公主長得像辛慰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子干像,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容

  • record 用''或者""引起來的字符集2.str - 不可變(不支持增刪改)帅腌、有序(支持下標語法)3.字符:...
    zlyyL閱讀 279評論 0 1
  • 1.格式字符串: 在字符串中通過格式占位符來表示字符串中的變化部分 1.1語法: 包含格式占位符的字符%(給格式占...
    ham731閱讀 507評論 0 1
  • 一、認識列表 1.什么是列表是python中的容器類的數(shù)據(jù)類型麻汰,可以用來存儲多個數(shù)據(jù)速客。可變的五鲫,有序的溺职。可變指的是列...
    龍神海王閱讀 168評論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常浪耘。 O...
    我想起個好名字閱讀 5,256評論 0 9
  • 偶爾的機會智亮,我看到了長投學堂,心想:9元的價格即使沒什么收獲点待,我也沒什么損失阔蛉,試試看唄!于是就購買了小白課程癞埠。 第...
    微風徐徐00閱讀 318評論 0 3