<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    python強制類型轉換

    文檔

    python強制類型轉換

    python強制類型轉換,也稱為數據類型的顯示轉換,是通過Python的內建函數來實現的類型轉換,包括多種函數的操作轉換。
    推薦度:
    導讀python強制類型轉換,也稱為數據類型的顯示轉換,是通過Python的內建函數來實現的類型轉換,包括多種函數的操作轉換。

    python強制類型轉換有哪些方法?一起來看看小編今天的分享吧。

    數據類型的強制類型轉換,也稱為數據類型的顯示轉換,是通過Python的內建函數來實現的類型轉換。

    顯式轉換的多種類型:

    int(x [,base]) ? 將x轉換為一個十進制的整數long(x [,base]) ? 將x轉換為一個十進制的長整數float(x) ? 將x轉換為一個浮點數str(object) ? 轉換為字符串repr(object) ? 轉換為表達式字符串eval(str) ? 用來計算在字符串中的有效Python表達式,并返回一個對象tuple(seq) ? 將序列seq轉換為一個元組list(seq) ? 將序列seq轉換為一個列表chr(x ) ? 將一個整數轉換為一個字符unichr(x ) ? 將一個整數轉換為Unicode字符ord(x ) ? 將一個字符轉換為它的整數值hex(x ) ? 將一個整數轉換為一個十六進制字符串oct(x ) ? 將一個整數轉換為一個八進制字符串

    下面詳細介紹一些常用的類型轉換。

    一、Non-String轉換為String

    str()函數

    str(object=”) -> stringReturn a nice string representation of the object.If the argument is a string, the return value is the same object.str()是最常用的轉換為String的內建函數,可以接受任意對象,并將其轉換為String類型。若object為String類型,則返回一個同類型的對象。將List對象轉換為String:

    In?[13]:?li
    Out[13]:?['My',?'Name',?'Is',?'Jmilk']
    In?[14]:?strLi?=?str(li)
    In?[15]:?print?strLi[0]
    [

    將Tuple對象轉換為String:

    In?[19]:?tup?=?('my','name','is','jmilk')
    In?[20]:?str(tup)
    Out[20]:?"('my',?'name',?'is',?'jmilk')"
    In?[22]:?str(tup)[3]
    Out[22]:?'y'

    將Dictionary對象轉換為String:

    In?[23]:?dic?=?{'name':'Jmilk','age':23}
    In?[24]:?str(dic)
    Out[24]:?"{'age':?23,?'name':?'Jmilk'}"
    In?[25]:?str(dic)[3]
    Out[25]:?'g'

    上面3個例子可以發現,在轉換為String后無論是原來的特殊符號還是空格符都會成為String的元素之一。

    repr()

    repr(object) -> stringReturn the canonical string representation of the object.For most object types, eval(repr(object)) == object.repr()函數的使用方法于str()函數類似,都是傳入一個任意對象,再返回一個String類型對象,但兩者卻有著本質的區別。

    str()和repr()的區別

    主要的區別就在repr()支持eval(repr(object)) == object。str()函數的目標是一般用戶的可讀性,返回一個更適合人閱讀的nice string。而repr()則返回一個更適合python解析器閱讀的canonical strng,同時會返回Python解析器能夠識別的數據細節,但這些細節對一般用戶來說是多余的。而且repr()轉換后的String對象可以通過求值運算eval()來還原到轉換之前的對象,相比之下str()通常不需要eval()去處理。

    In?[61]:?name?=?('My?name?is?Jmilk
    ')
    In?[62]:?print?str(name)
    My?name?is?Jmilk
    In?[63]:?print?repr(name)'My?name?is?Jmilk
    '

    上面例子可以看出str()打印出來的字符串會更符合人的閱讀習慣。

    eval()

    eval()函數,能夠結合repr()函數將一個經過轉換為Strng類型后的對象還原為轉換之前的對象類型。同時eval()也被稱為求值運算,可以將字符串str當成有效的表達式來求值并返回計算結果。

    In?[64]:?name?=?('My?name?is?Jmilk
    ')
    In?[65]:?name1?=?str(name)
    In?[66]:?name1Out[66]:?'My?name?is?Jmilk
    '
    In?[67]:?name2?=?repr(name)
    In?[68]:?name2Out[68]:?"'My?name?is?Jmilk\n'"
    In?[69]:?eval(name1)
    ??File?"",?line?1
    ????My?name?is?Jmilk
    ??????????^
    SyntaxError:?invalid?syntax
    In?[70]:?eval(name2)Out[70]:?'My?name?is?Jmilk
    '

    eval(str(Object))可能會報錯,無法還原為原來的對象型。而eval(repr(object))卻可以還原,下面例子:

    In?[81]:?name?=?('My','name','is','Jmilk
    ')
    In?[82]:?repr(name)Out[82]:?"('My',?'name',?'is',?'Jmilk\n')"
    In?[83]:?eval(repr(name))Out[83]:?('My',?'name',?'is',?'Jmilk
    ')
    In?[84]:?type(eval(repr(name)))Out[84]:?tuple

    總結:這是因為str()函數主要是為了讓人能夠更好的閱讀其內容,而rper()除了轉換為String類型外,還能夠被Python解析器識別其數據細節,從而repr()轉換后的字符串能夠被當作有效表達式來處理。注意:eval()函數最主要的功能是能夠將字符串中有效的表達式進行計算并返回一個對象。如下:

    In?[141]:?sum?=?'100+10'
    In?[142]:?eval(sum)
    Out[142]:?110

    二、Non-int轉換為int

    Int型的最大值僅與系統位數有關,32位:maxInt == 2**(32-1)-1 ; 64位:maxInt == 2**(64-1)-1。可以通過sys.maxint來查看:

    In?[42]:?sys.maxint
    Out[42]:?9223372036854775807
    In?[43]:?2**63-1
    Out[43]:?9223372036854775807L

    在Python2.4x版本之后為Int增加了Long的隱式轉換來防止數據范圍溢出。int(x[, base=10]) -> int or longbase:指定進制x:通常為一個Stringbase指定了x的進制

    Long轉換為Int,使用自定義函數

    當一個Long > sys.maxint(2**63-1)時,Long類型對象是無法轉換為Int的。例如:

    In?[79]:?int(2**63)
    Out[79]:?9223372036854775808L?????#仍為Long類型

    下面使用一個自建的函數來實現當Long > sys.maxint時的Long到Int的強制類型轉換。需要實現兩個方面,一個是轉換數值(不能超過maxint),另一個是轉換類型為int。轉換數值:

    In?[130]:?%pycat?longToInt.pyimport?sysdef?longToInt(value):
    ????if?value?>?sys.maxint:
    ????????return?(value?&?sys.maxint)
    ????else:
    ????????return?value
    if?__name__?==?'__main__':
    ????number?=?2**63
    ????result?=?longToInt(number)
    ????print?'number?-?sys.maxint?=?%s?-?%s?=?%s'?%?(number,sys.maxint,result)
    ????print?'result?is?%s,result?type?is?%s;number?type?is?%s'?%?(result,type(result),type(number))
    ?
    In?[131]:?run?longToInt.py
    number?-?sys.maxint?=?9223372036854775808?-?9223372036854775807?=?1
    result?is?0,result?type?is?;number?type?is

    上例:當number-sys.maxint=1時,將Long型number的數值轉化為0輸出。即當一個int類型的數值超過sys.maxint時,再將多余于的數值環回計數。以此類推,當number-sys.maxint=101時,Long型的number的環回計數為100。需要注意的是:盡管數值是大于maxint,但是其數據類型仍然為long,可以使用int()函數將環回的數值轉化為Int型,且只能在轉換數值后才能成功額轉換類型。轉換類型:

    In?[136]:?%pycat?longToInt.pyimport?sysdef?longToInt(value):
    ????if?value?>?sys.maxint:
    ????????return?(value?&?sys.maxint)
    ????else:
    ????????return?value
    if?__name__?==?'__main__':
    ????number?=?2**63+100
    ????result?=?longToInt(number)
    ????print?'number?-?sys.maxint?=?%s?-?%s?=?%s'?%?(number,sys.maxint,result+1)
    ????print?'result?is?%s,result?type?is?%s;number?type?is?%s'?%?(result,type(int(result)),type(number))
    ?
    In?[137]:?run?longToInt.py
    number?-?sys.maxint?=?9223372036854775908?-?9223372036854775807?=?101
    result?is?100,result?type?is?;number?type?is

    Float轉換為Int

    浮點型轉為整型會進行向下取整。

    In?[130]:?int(10.9)
    Out[130]:?10

    String轉換為Int

    In?[131]:?int('0xa',16)Out[131]:?10
    In?[132]:?int('1010',2)Out[132]:?10

    參數16表示’0xa’為16進制數,int()轉換以后獲得10進制數,若不指明’0xa’的進制,則會報錯。

    In?[133]:?int('0xa')
    ValueError:?invalid?literal?for?int()?with?base?10:?'0xa'

    三、Non-long轉化為long類型

    long(x=0) -> longlong(x, base=10) -> long生成一個long對象:

    In?[24]:?long(10)
    Out[24]:?10L

    也可以簡單的實現:

    In?[138]:?num?=?10L
    In?[139]:?type(num)Out[139]:?long
    Int轉化為Long

    int型轉換為long型不需要強制類型轉換,這就是相對的隱式類型轉換,系統會在后臺完成。在后面的博文中再作介紹。

    Float轉換為Long

    向下取整

    In?[27]:?long(10.9)
    Out[27]:?10L

    String轉換為Long

    In?[33]:?long('0xa',16)
    Out[33]:?10L
    In?[34]:?long('1010',2)
    Out[34]:?10L

    可以看出,Int與Long類型的數據非常類似,唯一的區別在于,Long類型的數據范圍更加大。(Int)

    四、Non-float轉換為float

    float(x) -> floating point numberConvert a string or number to a floating point number, if possible.可以接收Int和String類型參數,float()函數在連接數據庫操作會被經常使用。當參數為String時,只能出現數字和一個點額任意組合,若出現多個點號,則會出現異常。

    In?[194]:?float(10)
    Out[194]:?10.0
    In?[195]:?float('100')
    Out[195]:?100.0
    In?[199]:?float('.1111')
    Out[199]:?0.1111
    In?[204]:?float('.98.')---------------------------------------------------------------------------
    ValueError????????????????????????????????Traceback?(most?recent?call?last)?in?()---->?1?float('.98.')
    ValueError:?invalid?literal?for?float():?.98.

    Sequence轉換為List

    list(iterable) -> new list initialized from iterable’s items使用迭代器中的元素生成一個新的列表

    五、String轉換為List

    將字符串中的每一個字母作為列表中的一個元素,空格也算是一個元素。

    In?[137]:?name?=?'My?name?is?Jmilk'
    In?[138]:?list(name)Out[138]:
    ['M',
    ?'y',
    ?'?',
    ?'n',
    ?'a',
    ?'m',
    ?'e',
    ?'?',
    ?'i',
    ?'s',
    ?'?',
    ?'J',
    ?'m',
    ?'i',
    ?'l',
    ?'k']

    Tuple轉換為List

    Tuple轉換為List與String其實大同小異:

    In?[1]:?tup?=?('My','name','is','Jmilk')
    In?[2]:?list(tup)
    Out[2]:?['My',?'name',?'is',?'Jmilk']

    將Tuple對象中的每一個元素轉換為List中的每個元素。

    Sequence轉換為Tuple

    tuple(iterable) -> tuple initialized from iterable’s items利用迭代器中的元素生成新的元組

    六、String轉換為Tuple

    In?[5]:?str?=?'My?name?is?Jmilk!'
    ?
    In?[6]:?tuple(str)
    Out[6]:
    ('M',
    ?'y',
    ?'?',
    ?'n',
    ?'a',
    ?'m',
    ?'e',
    ?'?',
    ?'i',
    ?'s',
    ?'?',
    ?'J',
    ?'m',
    ?'i',
    ?'l',
    ?'k',
    ?'!')

    類似String轉換為List,空格任然算一個元素。

    List轉換為Tuple

    In?[9]:?li
    Out[9]:?['My',?'name',?'is',?'Jmilk']
    In?[10]:?tuple(li)
    Out[10]:?('My',?'name',?'is',?'Jmilk')

    七、將List和Tuple復合數據類型轉換為Dictionary

    格式:dict([(key1,value1),..])

    In?[144]:?li?=?['name','age','city']
    In?[145]:?tup?=?('jmilk',23,'BJ')
    In?[146]:?zip(li,tup)
    Out[146]:?[('name',?'jmilk'),?('age',?23),?('city',?'BJ')]
    In?[148]:?dict(zip(li,tup))
    Out[148]:?{'age':?23,?'city':?'BJ',?'name':?'jmilk'}

    Dictionary轉換為List

    相對的,Dictionary的鍵值對也能夠轉換為List和Tuple的復合數據類型。D.items() -> list of D’s (key, value) pairs, as 2-tuples

    In?[159]:?dic
    Out[159]:?{'age':?23,?'city':?'BJ',?'name':?'jmilk'}
    In?[160]:?dic.items()
    Out[160]:?[('city',?'BJ'),?('age',?23),?('name',?'jmilk')]

    八、Int轉換為字符char

    chr(i) -> characterReturn a string of one character with ordinal i; 0 <= i < 256.以整數所對應的ASCII碼來轉換為Char,i屬于[0,256)。

    In?[174]:?chr(65)
    Out[174]:?'A'
    ?
    In?[175]:?chr(97)
    Out[175]:?'a'

    強制數據類型轉換在編程過程中國非常常見,且在對內存、時間等運行環境要求嚴格的程序中尤為重要。

    以上就是小編今天的分享了,希望可以幫助到大家。?

    文檔

    python強制類型轉換

    python強制類型轉換,也稱為數據類型的顯示轉換,是通過Python的內建函數來實現的類型轉換,包括多種函數的操作轉換。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    python查看已安裝的包 python判斷字符串相等 python內置函數 python遞歸函數 python類的繼承 python string函數 python構造函數 python延時函數 debug error怎么解決 python讀取json并解析 python 列表添加 python字典按值的大小排序 python 排序算法 spring boot mysql配置 vue動態綁定style js date加一天 字符轉換成ascii碼 c語言struct用法 java reentrantlock python tkinter教程 python input函數怎么用 python類型轉換 python split函數用法 python讀取json python組合數據類型 python查看變量類型 python split函數 c++ template用法 老抽和生抽的區別 拉鏈下滑如何解決 防藍光眼鏡怎么辨別 蔥怎么保存 老姜和生姜的區別 新鮮蘑菇怎么保存 豬腳和豬手有什么區別 亞麻籽油是什么油 白茶保存方法和時間 水晶粉是什么面粉 艾素糖是什么糖 奶酪棒是什么做的
    Top 国产亚洲精品91| 久久久久久久久66精品片| 亚洲国产成人精品91久久久| 国产91精品在线观看| 久久老子午夜精品无码怎么打| 无码AⅤ精品一区二区三区| 亚洲精品无码久久久久YW| 人妻少妇精品视中文字幕国语 | 精品一区二区三区在线视频| 国产一区二区精品久久岳√| 9久9久女女免费精品视频在线观看 | 国产精品免费大片| 国产精品九九久久免费视频| 日产精品一卡2卡三卡4乱码| 91精品国产91久久久久久青草| 亚洲AV无码国产精品麻豆天美| 精品国产福利盛宴在线观看| 又紧又大又爽精品一区二区| 国模精品视频一区二区三区| 99在线精品免费视频九九视| 91精品国产91久久久久青草| 午夜精品视频在线| 国产精品熟女一区二区| 视频一区精品自拍| 国产亚洲精品不卡在线| 国产精品免费久久久久影院| 伊人精品视频在线| 国产精品一区二区AV麻豆| 国产麻豆剧传媒精品国产AV| 久久精品日韩一区国产二区| 日韩精品久久久久久久电影| 国产精品蜜芽在线观看| 亚洲国产成人精品无码一区二区 | 一区二区精品在线| 亚洲国产精品久久久久婷婷老年| 免费视频精品一区二区三区| 国内精品久久国产大陆| 久久国产亚洲精品麻豆| 国产成人精品高清在线观看93 | 精品国产不卡一区二区三区 | 999精品视频在线观看热6|