<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      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 少妇高潮太爽了在线视频