05 常用技巧介紹(列表、元組、字典)

1 列表操作

li = ['alex', 'wusir', 'egon', '女神', 'taibai']

# 在最后的位置增加
li.append('當(dāng)當(dāng)')
print(li)
# 迭代加到最后的位置
li.extend('昊天')
print(li)
# 在‘女神’后面加一個(gè)123
li.insert(4,123)
print(li)
# 按索引刪除忱反,默認(rèn)刪除最后一個(gè)
li.pop()
print(li)
li.pop(1)
print(li)
# 按元素刪除泛释,有重復(fù)元素,刪除索引最小的一個(gè)
li.append('當(dāng)當(dāng)')
print(li)
li.remove('當(dāng)當(dāng)')
print(li)

# 清空列表
li.clear()
print(li)
'''輸出結(jié)果如下:
['alex', 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
['alex', 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)', '昊', '天']
['alex', 'wusir', 'egon', '女神', 123, 'taibai', '當(dāng)當(dāng)', '昊', '天']
['alex', 'wusir', 'egon', '女神', 123, 'taibai', '當(dāng)當(dāng)', '昊']
['alex', 'wusir', '女神', 123, 'taibai', '當(dāng)當(dāng)', '昊']
['alex', 'wusir', '女神', 123, 'taibai', '當(dāng)當(dāng)', '昊', '當(dāng)當(dāng)']
['alex', 'wusir', '女神', 123, 'taibai', '昊', '當(dāng)當(dāng)']
[]
'''

刪除列表

li = ['alex', 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
# 從0開始刪除前兩個(gè):
del li[0:2]
print(li)

'''輸出結(jié)果如下:
['egon', '女神', 'taibai', '當(dāng)當(dāng)']
'''

賦值

li = ['alex', 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
li[0] = '男神'
print(li)
li[0] = [1,2,3]
print(li)
# 將從0開始的前兩個(gè)拿出來缭受,然后迭代添加進(jìn)去
li[0:2] = '阿里巴巴'
print(li)
li[0,4] = [123,'春哥', 'dddd']
print(li)

'''輸出結(jié)果如下:
['男神', 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
[[1, 2, 3], 'wusir', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
['阿', '里', '巴', '巴', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
[123, '春哥', 'dddd', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
'''

查詢

for i in li:
    print(i)
print(li[0:2])

公共方法:

  • len:測量長度
len(li)
  • count:統(tǒng)計(jì)出現(xiàn)的次數(shù)
li = ['阿', '里', '巴', '巴', 'egon', '女神', 'taibai', '巴巴']
li.count('巴')
  • index:返回索引
li = ['阿', '里', '巴', '巴', 'egon', '女神', 'taibai', '巴巴']
# 返回第一次出現(xiàn)的索引
li.index('巴')
  • sort:排序
# 正向排序
li.sort()
# 反向排序
li.sort(reverse=True)
  • reverse:反轉(zhuǎn)
li = [123, '春哥', 'dddd', 'egon', '女神', 'taibai', '當(dāng)當(dāng)']
li.reverse()
# reverse反轉(zhuǎn)的是自身
print(li)
'''輸出結(jié)果如下:
['當(dāng)當(dāng)', 'taibai', '女神', 'egon', 'dddd', '春哥', 123]
'''

列表嵌套:

li = ['taibai', '武藤蘭', '苑昊', ['alex','egon',89],23]
# 打印一個(gè)“藤”
print(li[1][1])

# 將‘taibai’改為‘Taibai’胁澳,即首字母大寫
name = li[0].capitalize()
li[0] = name
print(li)

2 元組操作

  • 元組:
    • 只讀列表
    • 可循環(huán)查詢,可切片
    • 兒子不能改米者,孫子可能可以改
tu = (1, 2, 3, 'alex', [2, 3, 4, 'taibai'], 'egon')
# 找到alex
print(tu[3])
# 分片
print(tu[0:4])
# 循環(huán)
for i in tu:
    print(i)
# 將taibai 改成 TAIBAI
tu[4][3] = tu[4][3].upper()
print(tu)
# 添加一個(gè)元素‘sb’
tu[4].append('sb')
print(tu)


# str ---》 list 用 split
# list ---》 str 用 jion
# list的元素都必須是字符串
s = 'alex'
s1 = '__'.join(s)
tu = ( 'alex', 'egon')
s2 = '__'.join(tu)
print(s1)
print(s2)

3 字典

python唯一映射數(shù)據(jù)類型

  • 數(shù)據(jù)類型:

    • 可變數(shù)據(jù)類型(不可hash):list韭畸,dict,set
    • 不可變數(shù)據(jù)類型(可hash):元組蔓搞,bool胰丁, int,str
  • dict:

    • key:必須是不可變數(shù)據(jù)類型喂分,可hash
    • value:任意數(shù)據(jù)類型
    • 優(yōu)點(diǎn):
      • 二分查找去查詢
      • 存儲大量的關(guān)系型數(shù)據(jù)
    • 特點(diǎn):
      • 無序的
dic1 = {
    'name': ['大猛', '小孟'],
    'py9': [{'num':71, 'avg_age':18}],
    True:1,
    (1,2,3): 'wuyiyi',
    # 元組里面帶有l(wèi)ist也是不行的
    # (12,[1,2]): '行不行',
    2: '兒歌'
}
print(dic1)

# 刪
print(dic1.pop('py9')) # 有則按鍵刪除, 返回此鍵的value
print(dic1.pop('py9',"沒有此建")) # 沒有此建锦庸,可以設(shè)置返回值
print(dic1.popitem()) # 隨機(jī)刪除,有返回值 元組(里面是刪除的鍵值)
print(dic1)

# 查
print(dic1.keys())
print(dic1.values())
print(dic1.items())

遍歷的技巧:

a = 1
b = 2
# a,b 地址互換
a,b = b,a
print (a, b)
a, b = [1, 2]
print (a, b)
a, b = [1, 2], [2, 3]
print (a, b)
a, b = (1, 2)
print (a, b)

for k,v in dic1.items():
    print (k, v)

鍵值不報(bào)錯的方式:

v1 = dic1['name']

v2 = dic1['name1'] # 報(bào)錯

print(dic1.get('name1', '沒有這個(gè)鍵'))

輸入一段字符串蒲祈,只將字母轉(zhuǎn)成“空格”

info = input(">>>")  #fhdalf1232ddfqer12dfjal13
for i in info:
    if i.isalpha():
        info = info.replace(i," ")
l = info.split()
print(len(l))

ps:“for i in info:”在這一句的時(shí)候info已經(jīng)載入for循環(huán)中了甘萧,因此循環(huán)在里面修改info的時(shí)候,也不會更改for循環(huán)的執(zhí)行情況

4 作業(yè)

循環(huán)打印列表:“(1, 2, 3, 'alex', [2, 3, 4, 'taibai'], 'egon')” 梆掸, 要求子列表的元素也能循環(huán)打印扬卷,即如下所示:

1, 
2, 
3, 
'alex', 
2, 
3, 
4, 
'taibai', 
'egon'

解答如下:

# 采用遞歸的方式迭代打印元素
def iteratorPrint(it):
    for item in it:
        if isinstance(item, Iterable) and  not isinstance(item, str):
            iteratorPrint(item)
        else:
            print(item)


iteratorPrint(tu)

5 小結(jié)

5.1 = 、==酸钦、 is

  • =:賦值
image-20191027133417887.png
  • ==:比較值是否相等

  • is:比較的是內(nèi)存地址

image-20191027133213542.png

5.2 內(nèi)存地址

  • id:看內(nèi)容
image-20191027133311061.png
  • 數(shù)字怪得,字符串:小數(shù)據(jù)池

    • 數(shù)字的范圍:-5 ~256

      image-20191027191722923.png
  • 字符串的范圍:

    • 不能有特殊字符
    image-20191027192208524.png
  • 剩下的list、tuple卑硫、dict徒恋、set都不沒有小數(shù)據(jù)池的概念

5.3 編碼說明

  • 編碼:

    • ascii:
      • 只能有英文
      • 一個(gè)字節(jié)表示(8位)
    • unicode:
      • A:32位 四個(gè)字節(jié)
      • 中:32位 四個(gè)字節(jié)
    • utf-8:
      • A: 8位 一個(gè)字節(jié)
      • 中: 24位 三個(gè)字節(jié)
    • gbk:
      • A: 8位 一個(gè)字節(jié)
      • 中:16位 兩個(gè)字節(jié)
    • 注意事項(xiàng):
      • 各個(gè)編碼之間的二進(jìn)制,是不能互相識別的欢伏,會產(chǎn)生亂碼入挣;
      • 文件的存儲,傳輸硝拧,不能是unicode(只能是utf-8 财岔、 utf-16、gbk河爹、ascii等)匠璧,只是用于轉(zhuǎn)換
  • python3

    • str 在內(nèi)存中用的是unicode存儲的,
      • bytes類型
    image-20191027212151079.png
  • 對于英文

    • str:
      • 表現(xiàn)形式: s = 'alex'
      • 編碼方式 010101010 unicode
    • bytes
      • 表現(xiàn)形式: s1 = b'alex'
      • 編碼方式: 000101010 utf-8 gbk 咸这。夷恍。。
  • 對于中文:

    • str:
      • 表現(xiàn)形式:s = '中國'
      • 編碼方式:0101010 unicode
    • bytes:
      • 表現(xiàn)形式: s = b'x\e91\e91\e01\e21\e32'
      • 編碼方式:000101010 ut-8 gbk 。酿雪。遏暴。
  • encode編碼, 如何將str --> bytes指黎,而且可以設(shè)置編碼方式

s1 = 'alex'
s11 = s1.encode('utf-8')
print(s11)
s2 = '中國'
# utf-8 是三個(gè)字節(jié)表示一個(gè)漢字
s21 = s2.encode('utf-8')
print(s21)
# gbk 是兩個(gè)字節(jié)表示一個(gè)漢字
s22 = s2.encode('gbk')
print(s22)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朋凉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子醋安,更是在濱河造成了極大的恐慌杂彭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吓揪,死亡現(xiàn)場離奇詭異亲怠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柠辞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門团秽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事⊙埔Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵姻报,是天一觀的道長。 經(jīng)常有香客問我间螟,道長,這世上最難降的妖魔是什么损肛? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任厢破,我火速辦了婚禮,結(jié)果婚禮上治拿,老公的妹妹穿的比我還像新娘摩泪。我一直安慰自己,他們只是感情好劫谅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布见坑。 她就那樣靜靜地躺著,像睡著了一般捏检。 火紅的嫁衣襯著肌膚如雪荞驴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天贯城,我揣著相機(jī)與錄音熊楼,去河邊找鬼。 笑死能犯,一個(gè)胖子當(dāng)著我的面吹牛鲫骗,可吹牛的內(nèi)容都是我干的犬耻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼执泰,長吁一口氣:“原來是場噩夢啊……” “哼枕磁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起术吝,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤计济,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后顿苇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峭咒,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年纪岁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凑队。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幔翰,死狀恐怖漩氨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遗增,我是刑警寧澤叫惊,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站做修,受9級特大地震影響霍狰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饰及,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一蔗坯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燎含,春花似錦宾濒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赴魁,卻和暖如春卸奉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颖御。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工择卦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓秉继,卻偏偏與公主長得像祈噪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子尚辑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

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