亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

002_第一部分_[字典 / 列表解析 / 字符串操作 / STR與BYTES的區(qū)別 ]

CastlePeaK / 3644人閱讀

摘要:一字典定義字典獲取元素這兩個的區(qū)別用在不存在的時候不會拋出設(shè)置當(dāng)不存在的時候返回的內(nèi)容增加和修改元素修改和增加元素的方法都是這個刪除元素刪除的同時返回刪除的內(nèi)容如果刪除不存在的會報這個時候就需要給定返回值這樣返回的就是不會報錯誤從字典中隨機(jī)

一.字典:

定義字典:
d = {}
d = dict()
d = {"a":1, "b":2}

1.獲取元素:
d["a"]
d.get("a")
>這兩個的區(qū)別,用get在key不存在的時候不會拋出Error;

d.get("a", "information")   //設(shè)置當(dāng)key不存在的時候返回的內(nèi)容;
2.增加和修改元素:
d["a"] = 3   //修改和增加元素的方法都是這個
3.刪除元素:
d.pop("c")  //刪除的同時返回刪除的內(nèi)容
>如果刪除不存在的key會報KeyError,這個時候就需要給定返回值

d.pop("c", "information")
help(d.pop)

>這樣返回的就是information,不會報KeyError錯誤;

d.popitem()    //從字典中隨機(jī)刪除一個;

利用關(guān)鍵字del 刪除,del 可以刪除一個變量 同時也可以用來刪除字典:
del d["a"]
4.遍歷:
>[生成一個生成器,可以進(jìn)行迭代操作][字典是無序的,所以返回的迭代對象也是無序的]

d.items()  生成器中是一個元組的列表
d.values()  
d.keys()    
    for i in d.keys()

    d = {}
    d["root"] = "root"
    d["root"]["left"] = "left"
    d["root"]["right"] = "right"
    d  //生成一個二叉樹
二.列表解析:

列表解析是Python重要的語法糖

列表解析的速度比for in 迭代 快

基本語法:
    ret = [expression for item in iterator]
    ret = [expression for item in iterator if iterator >=1 and iterator != 7 ] 
    ret = [expression for x in X for y in Y]   //返回的是一個笛卡爾積,相當(dāng)于兩個嵌套的for循環(huán)

    等價于
    ret = []
    for item in iterator:
        ret.append(expression)

例子1:
    lst = list(range(10))
    [x + 1 for x in lst]

    import timeit
    def fn1():

    timeit.timeit(fn1())   //查看函數(shù)執(zhí)行需要的時間

例子2:
    帶條件的列表解析:
    lst = list(range(10))
    [x + 1 for x in lst if x % 2 == 0]   //輸出奇數(shù)

    [x + 1 for x in lst if x % 2 == 0 and x > 2 ]   //兩個條件

例子3:
    l1 = [1, 3, 5, 7, 9]
    l2 = [0, 2, 4, 6, 8]
    [(x,y) for x in l1 for y in l2]
    [(1, 0-8)        //每個l1的值 x 都會循環(huán)一遍l2
      (3,0-8 )
     (5, 0-8)
    ] 
    
    
三.集合解析:
**集合解析中得到的元素只能有一個**
ret = {expression for item in iterator}

例子1:
     s = [1, 3, 5, 5] 
    {x + 1 for x in s}
    {2, 4, 6}
四.字典解析:
ret = {exprK:exprV for item in iterator}

例子1:
    d = {"a":1, "b":2}
    {k, v for k, v in d.items()}

例子2:
    {k:v for k, v in [("a",1), ("b", 2)]}
    {"a":1, "b":2}
五.字符串與文本操作:

python2 和python3最大的差別就是在于字符串
python2中字符串是byte的有序序列
python3中字符串是unicode的有序序列
字符串是不可變的
字符串支持下標(biāo)和切片

1.字符串的切片操作:
t = "asdfzxv"     //前面是閉區(qū)間,從0開始,后面是開區(qū)間
t[1]
t[-1]
t[0:]
t[:]
t[1:-1]
2.字符串格式化: 1.使用 % 來格式化
"i love %s" % ("python",)
"i love %(name)s" % {"name":"python"}
"i love %(name)s %(name)s" % {"name":"python"}   //當(dāng)有多個重復(fù)使用的值,可以使用字典的方式
"i love %s ,%s" % ("python", "python")  //進(jìn)行多個不同數(shù)值的格式化

FLAG
flag |說明 |實(shí)例                                        輸出:
n    n表示一個數(shù)字       "%3s" % ("a", )                     "  a"    //在a前面會有兩個空格
0    使用0填充,僅適用與數(shù)字  "%03d" % (1, )          "001"
.     是有那個空格填充,默認(rèn)行為  "%.3d" % (1, )      "  1"  //在1前面以空格填充

右邊使用空格填充 "%-3d" % (1, ) "1 " //在1后面以兩個空格填充

填充之前加"+" 僅對于正數(shù) "%+03d" % (1, ) "+01" //在1前面填充0,增加正數(shù)標(biāo)記符

CONVERSION
符號 說明

整數(shù)

整數(shù)

八進(jìn)制整數(shù)

小寫十六進(jìn)制整數(shù)
X 大寫十六進(jìn)制整數(shù)

浮點(diǎn)數(shù)
F 浮點(diǎn)數(shù)

小寫科學(xué)計數(shù)法
E 大寫科學(xué)計數(shù)法

整數(shù), 已廢棄

同f,如果指數(shù)小于-4,同e
G 同f,如果指數(shù)小于-4,同E

字符,接收unicode編碼或單字符字符串

字符串,使用ascii函數(shù)轉(zhuǎn)換

字符串,使用repr函數(shù)轉(zhuǎn)換

字符串,使用str函數(shù)轉(zhuǎn)換

例子1:
"%d" % 3.4
> 3

2.使用format方法格式化:

https://docs.python.org/3.4/library/stdtypes.html?highlight=format#str.format
template format(args, *kwargs) (1) (2) (3) (4)

1.template 使用 {} 標(biāo)示變量
2.{}或{d+} 使用 *args 按順序填充
3.{key} 使用 **kwargs 按 key 填充
4.Format String Syntax

例子1:
"{0}, {name}".format("hello",name="world")
3.字符串常用操作 [重點(diǎn)] :

字符串連接join
字符串分割split, rsplit, splitlines, partition, rpartition
字符串修改-大小寫 capitalize, title, lower, upper, swapcase
字符串修改-填充清除 center, ljust, rjust, zfill, strip, rstrip,lstrip
字符串判斷 startswith, endswith,is*
字符串查找替換 count, find, rfind, index, rindex, replace

1.join[字符串連接]:
    lst = ["i", "like", "python"]
    " ".join(lst)
    "_".join(lst)
    ret = ""
    for i in lst:
          ret += i
          ret += " "
    ret
2.split - rsplit - splitlines[分割]:
    內(nèi)置函數(shù)split是不支持正則表達(dá)式的,需要先import re模塊;
    help(str.split)
    S.split(sep=None, maxsplit=-1) 
    
    例子1:
    s="i like python"
    s.split()
    ["i", "like", "python"]

    例子2:
    s.split("o")      //指定的分割符不會被保留;
    >["i like pyth", "n"] 
    
    例子3:
    s.split(" ", 1)  //后面的數(shù)表示分割幾次,默認(rèn)是最大分割, -1表示從后開始分割
    ssplit(" ", -1)
    這里可以使用UNPACKING:
    s = "root:x:0:0:root:/root:/bin/bash"
    username,_ = s.plit(":", 1)
    username
    > "root"

    例子4:
    s = "root
:x:0
:0
:root:/root:/bin/bash"   //按照換行符分割
    s = """                  //像這樣需要多行的且需要按行分割的就需要用到splitlines
    11111111          //這里總共是4行,按照換行符算,第一行也有換行符
    22222222
    33333333
    """
    s.splitlines()
    > ["root", ":x:0", ":0", ":root:/root:/bin/bash"]
    s.splitlines(True)   //填寫True將會保留換行符,默認(rèn)False
3.partition - rpartition[分割]:
    s = "root
:x:0
:0
:root:/root:/bin/bash"
    s.partition(":")         //partition會按照順序 將分隔符多帶帶分割成一個元素,
    >("root", ":", "x:0:0:root:/root:/bin/bash")
4.capitalize - title - lower - upper - swapcase[修改 大小寫]:
capilize :   第一個字母變大寫,其他字母變小寫
       title:   每個單詞的首字母大寫,其他字母變小寫
    lower:   將所有字母變小寫
    upper:   將所有字母變大寫

swapcase: 將大小寫對換;

5.center - ljust - rjust - zfill - strip - rstrip - lstrip [修改 字母]:

center: 前后填充

            s.center(20)   //默認(rèn)用空格進(jìn)行前后填充,填充滿20個字符
            s.center(20,"#") //以"#"進(jìn)行前后填充.

 ljust:     填充向左邊
            s.ljust(20,"#")  #號將會填充在原來字符串的右邊,因?yàn)槭窍蜃筇畛?
 rjust:     填充向右邊
            與ljust方向相反;

   zfill:    zfill() 方法返回指定長度的字符串,原字符串右對齊,前面填充0
            str.zfill(width)

 strip:    刪除頭尾匹配符,默認(rèn)刪除換行符和空格,tab鍵
rstrip:    刪除結(jié)尾匹配符
lstrip:    刪除開頭匹配符

            f = open("/etc/passwd", "r")
            f.readline()   //返回的一行帶有換行符
            f.readline().strip()  //這樣將不會帶上換行符
6.startswith - endswith - is *[判斷]:
            for line in f.readlines():
                    line = line.strip()
                    if line.startwith("root:"):
                        _, shell = line.rsplit(":",1)
                        print(shell)
7.count, find, rfind, index, rindex, replace[查找 和 替換]:
        f = "sdfsdfsdfsadfsdf"
        f.count("r")  //統(tǒng)計有多少個r,如果是多個字符就是多個字符進(jìn)行匹配統(tǒng)計
        
        f.find("fs")      //從左開始查找第一次匹配到的位置; 找不到會返回 -1
        f.find("fs", 2, 4)  //設(shè)置 [開始] [結(jié)束] 位置
        f.index("fs")     //從左開始查找第一次匹配到的位置;找不到會返回ValueError

        f.replace("fs","pp")     //替換   將fs替換成pp
        f.replace("fs","pp", 2)  //從左向右進(jìn)行替換,替換兩個;
六.STR與BYTES的區(qū)別:

Python3中嚴(yán)格區(qū)分了文本和二進(jìn)制數(shù)據(jù)
Python2并沒有嚴(yán)格區(qū)分
文本數(shù)據(jù)使用str類型,底層實(shí)現(xiàn)是unicode
二進(jìn)制數(shù)據(jù)使用bytes類型,底層是byte
str使用encode方法轉(zhuǎn)化為bytes
bytes方法使用decode方法轉(zhuǎn)化成str
由于清晰的區(qū)分文本和二進(jìn)制,Python3解決了大多數(shù)python2的編碼問題

python3 中json的應(yīng)用:

   import json
   json.loads("{"name":"comyn"}")

socket中的發(fā)送信息;需要將str轉(zhuǎn)換成bytes才能發(fā)送;
s.send("{"name":"comyn"}".encode())

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/37794.html

相關(guān)文章

  • Python標(biāo)準(zhǔn)庫---12、內(nèi)置類型:文本序列類型(str

    摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型迭代器類型序列類型下一篇文章標(biāo)準(zhǔn)庫內(nèi)置類型二進(jìn)制序列類型文本序列類型在中處理文本數(shù)據(jù)是使用對象,也稱為字符串。正式的定義為十進(jìn)制數(shù)字符就是一般分類中的字符。 上一篇文章:Python標(biāo)準(zhǔn)庫---11、內(nèi)置類型:迭代器類型、序列類型(list-typle-range)下一篇文章:Python標(biāo)準(zhǔn)庫---13、內(nèi)置類型:二進(jìn)制序列類型 ( bytes, bytear...

    luoyibu 評論0 收藏0
  • Python 爬蟲面試題 170 道:2019 版

    摘要:下面代碼會存在什么問題,如何改進(jìn)一行代碼輸出之間的所有偶數(shù)。簡述進(jìn)程之間如何通信多路復(fù)用的作用模型的區(qū)別什么是并發(fā)和并行解釋什么是異步非阻塞的作用面試題說說你知道的命令如何查看某次提交修改的內(nèi)容答案掃碼下面的二維碼訂閱即可獲取。 引言 最近在刷面試題,所以需要看大量的 Python 相關(guān)的面試題,從大量的題目中總結(jié)了很多的知識,同時也對一些題目進(jìn)行拓展了,但是在看了網(wǎng)上的大部分面試題不...

    trigkit4 評論0 收藏0
  • 【Python從入門到精通】五萬六千字對Python基礎(chǔ)知識做一個了結(jié)吧?。ǘ耍局档檬詹亍?/b>

    摘要:它是一門解析型的語言,何為解析型語言呢就是在運(yùn)行時通過解析器將源代碼一行行解析成機(jī)器碼。而像語言,等則是編譯型的語言,即通過編譯器將所有的源代碼一次性編譯成二進(jìn)制指令,生成一個可執(zhí)行的程序。 ...

    leeon 評論0 收藏0
  • 流暢python

    摘要:流暢的中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用標(biāo)準(zhǔn)庫。常見的扁平序列包括,,等。數(shù)組支持所有跟可變序列有關(guān)的操作,包括和。和用于指定列表的區(qū)間,默認(rèn)是使用整個列表。但是元組的賦值不被允許,當(dāng)異發(fā)生時 流暢的python中有很多奇技淫巧,整本書都在強(qiáng)調(diào)如何最大限度地利用Python 標(biāo)準(zhǔn)庫。介紹了很多python的不常用的數(shù)據(jù)類型、操作、庫等,對于入門python后想要提升對p...

    Alan 評論0 收藏0
  • 120 道 Python 面試筆試題匯總(上篇)

    摘要:所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同時進(jìn)行。哈希函數(shù)的目的是使鍵均勻地分布在數(shù)組中。由于不同的鍵可能具有相同的哈希值,即可能出現(xiàn)沖突,高級的哈希函數(shù)能夠使沖突數(shù)目最小化。 首先這篇文章在我的《Python數(shù)據(jù)結(jié)構(gòu)》公眾號已經(jīng)提及,但是本篇文章提供了更為高級的解法,來發(fā)散大家的思維;同時為大家提供我的草稿py文件,大家可以關(guān)注《Python數(shù)據(jù)結(jié)構(gòu)》公眾號后恢復(fù) 120 ...

    susheng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<