<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 国产成人高清精品免费软件| 99国产精品热久久久久久| 国产自产拍精品视频免费看| 99热精品国产麻豆| 国语精品一区二区三区| 精品在线一区二区| 国内精品自产拍在线观看| 在线精品视频播放| 久久精品男人影院| 91视频精品全国免费观看| 四虎影院国产精品| 精品久久久中文字幕| 国产乱人伦精品一区二区| 正在播放国产精品放孕妇| 一区二区精品在线| 久久精品国1国二国三| 成人精品视频99在线观看免费| 热99精品只有里视频最新| 国产精品资源一区二区| 久久99热久久99精品| 国产精品亚洲专区在线观看| 久久99精品久久久久久动态图| 小辣椒福利视频精品导航| 奇米精品一区二区三区在线观看| 日本无码小泬粉嫩精品图| 久久久久99精品成人片牛牛影视| 青草青草久热精品视频在线观看| 国产精品亚洲专一区二区三区 | 91精品国产入口| 久久99精品久久久久麻豆| 久久精品福利视频| 久草精品视频在线播放| 亚洲国产精品特色大片观看完整版| 国产亚洲婷婷香蕉久久精品| 国产精品亚洲片在线| 国产精品区免费视频| 久久国产成人精品麻豆| 久久这里精品国产99丫E6| 久久国产精品电影| 2021精品国产品免费观看| 亚洲国产成人精品无码区在线秒播|