Python数据类型——整型、布尔型、列表、元祖、字典
Python解釋器可以自動(dòng)識(shí)別用戶輸入的數(shù)據(jù)類型。創(chuàng)建對(duì)象的數(shù)據(jù)類型,可以通過(guò)type查看。需要注意的是:用戶通過(guò)input輸入的數(shù)據(jù),其類型均為字符串
num1 = input("please input num1: ") num2 = input("please input num2: ") print("type of num1: ",type(num1),"type of num2: ",type(num2)) please input num1: test please input num2: 123 type of num1: <class 'str'> type of num2: <class 'str'>整型
整型可分為整型(32位機(jī)器上整型的取值范圍為:-2* * 31~-2* *31)和長(zhǎng)整型。Python2.7中會(huì)自動(dòng)轉(zhuǎn)換數(shù)字為整型、長(zhǎng)整型。但在Python3.6中,不再有整型長(zhǎng)整型之分。
Python中提供了10進(jìn)制轉(zhuǎn)換為其他進(jìn)制的方法
- 十進(jìn)制轉(zhuǎn)十六進(jìn)制
- 十進(jìn)制轉(zhuǎn)八進(jìn)制
- 十進(jìn)制轉(zhuǎn)二進(jìn)制
在浮點(diǎn)數(shù)中,Python默認(rèn)的精度為17位,這個(gè)精度越到后面越不準(zhǔn)確。當(dāng)我們的計(jì)算需要使用更高精度的時(shí)候,可以使用“getcontext”和"Decimal"的方式來(lái)實(shí)現(xiàn)
>>> a = 3.141592653002154564564 >>> a 3.1415926530021547 >>> from decimal import * >>> getcontext() Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow]) >>> getcontext().prec = 50 >>> a = Decimal(1)/Decimal(3) >>> a Decimal('0.33333333333333333333333333333333333333333333333333')整型的常用方法
int:強(qiáng)制類型轉(zhuǎn)換
>>> a = "0xa" >>> print(int(a,base=16)) 10bit_length:整數(shù)轉(zhuǎn)換成二進(jìn)制后所占最少bit位數(shù)
>>> a = 10 >>> print(a.bit_length()) 4 >>> print(bin(a)) 0b1010布爾型
包含True(非0)和False(0)。注意首字母大寫。以下內(nèi)容均為False:
- None,空;
- "",空字符串
- (),空元祖;
- [],空列表;
- {},空字典
- 數(shù)值0(整型、浮點(diǎn)型、復(fù)數(shù));
列表
- 列表的形式:使用中括號(hào)括起來(lái)
- 列表可以嵌套使用:
- 列表中的元素可以是:數(shù)字、字符串、列表、布爾值、字典(注意字典的無(wú)序特性)
- 對(duì)列表進(jìn)行切片后,所得到的數(shù)據(jù)還是列表
- 支持for、while循環(huán)提取所有子序列
- 字符串在內(nèi)存中的地址是連續(xù)的,所以字符串的數(shù)值一旦發(fā)生改變,就需要重新開辟新的內(nèi)存空間。而列表不一樣,它的子序列的存儲(chǔ)地址是非連續(xù)的,元素的內(nèi)容可以被修改,被修改后元素對(duì)應(yīng)的內(nèi)存地址不會(huì)發(fā)生改變。這是因?yàn)槊總€(gè)元素是采用鏈表的形式存儲(chǔ)的(即每個(gè)元素的內(nèi)存空間中,不僅存放了元素的數(shù)值,而且還有下一個(gè)元素的內(nèi)存地址)。列表的元素可以使用索引進(jìn)行修改,也可以使用切片的方法進(jìn)行修改
- 列表元素的刪除
- 如果列表的元素中存在列表或者字符串的話,可以對(duì)元素再進(jìn)行索引或切片
- 如果將一個(gè)字符串轉(zhuǎn)換成list后,會(huì)將字符串中的每個(gè)元素轉(zhuǎn)換成列表。int類型的對(duì)象不能轉(zhuǎn)換成list
- 列表轉(zhuǎn)換成字符串的時(shí)候,需要自己寫for循環(huán)。當(dāng)列表中的元素只有字符串時(shí),可以直接使用join
列表的常用方法
append:在列表元素的最后進(jìn)行追加(不需要對(duì)append進(jìn)行賦值操作)
>>> li = ["asd","fgh","liu"] >>> li.append("hai") >>> li.append(["lhh",123]) >>> print(li) ['asd', 'fgh', 'liu', 'hai', ['lhh', 123]]clear:清空列表
>>> li = ["asd","fgh","liu"] >>> li.clear() >>> print(li) []copy:(淺)拷貝
>>> li = ["asd","fgh","liu"] >>> v = li.copy() >>> print(v) ['asd', 'fgh', 'liu']count:計(jì)算列表中元素出現(xiàn)的次數(shù)
>>> li = [11,22,33,22,11] >>> print(li.count(22)) 2extend:將extend后參數(shù)中每一個(gè)元素迭代append到原列表中。注意和append的區(qū)別
>>> li = [11,22,33,22,11] >>> li.extend(["asd",44]) >>> print(li) [11, 22, 33, 22, 11, 'asd', 44] >>> li.append(["asd",44]) >>> print(li) [11, 22, 33, 22, 11, 'asd', 44, ['asd', 44]]index:查看指定元素在列表中的下標(biāo)
>>> li = [11,22,33,22,11] >>> print(li.index(22)) 1 >>> print(li.index(23)) Traceback (most recent call last):File "<stdin>", line 1, in <module> ValueError: 23 is not in listinsert:在列表中指定的下標(biāo)前插入對(duì)象
>>> li = [11,22,33,22,11] >>> print(li.insert(1,["lhh",360])) None >>> li.insert(1,["lhh",360]) >>> print(li) [11, ['lhh', 360], ['lhh', 360], 22, 33, 22, 11]pop:剔除指定下標(biāo)的元素(默認(rèn)剔除最后一個(gè)),并提取該元素的數(shù)值
>>> li = [11,22,33,22,11] >>> li.pop(2) 33 >>> print(li) [11, 22, 22, 11]remove:從左開始刪除指定元素,當(dāng)列表中同時(shí)存在多個(gè)相同的元素是,刪除第一個(gè)匹配的元素
>>> li = [11,22,33,22,11] >>> li.remove(22) >>> print(li) [11, 33, 22, 11]reverse:將列表中的元素反轉(zhuǎn)顯示
>>> li = [1,2,3,4] >>> li.reverse() >>> print(li) [4, 3, 2, 1]sort:將列表中的元素進(jìn)行排序(默認(rèn)為升序:reverse=False)
>>> li = [1,2,3,4,8,5] >>> li.sort() >>> print(li) [1, 2, 3, 4, 5, 8] >>> li = [1,2,3,4,8,5] >>> li.sort(reverse=True) >>> print(li) [8, 5, 4, 3, 2, 1]元祖
- 表現(xiàn)形式:使用小括號(hào)括起來(lái)的。元祖中的低級(jí)元素不可被修改,不支持增加刪除
- 元組中的元素可以是:字符串、數(shù)字、布爾值、列表、元組、字典
- 為了防止和類的方法混淆,一般元祖的最后,加上一個(gè)“,”,而元祖的長(zhǎng)度不會(huì)發(fā)生變化
- 可以使用索引、切片查看元祖的元素,但是不能對(duì)元素增刪。可以被for/while循環(huán)
- 字符串、列表都可以轉(zhuǎn)換為元祖
- 元祖可以轉(zhuǎn)換成字符串、列表
元組的常用方法
count:統(tǒng)計(jì)元祖中指定元素出現(xiàn)的次數(shù)
>>> tu = (11,22,33,2,22,) >>> print(tu.count(22)) 2index:統(tǒng)計(jì)指定元素在元組中的下標(biāo)。出現(xiàn)多個(gè)相同元素時(shí),從左開始取第一個(gè)匹配的下標(biāo)
>>> tu = (11,22,33,2,22,) >>> print(tu.index(22)) 1字典
形式:使用大括號(hào)括起來(lái)。字典的鍵值對(duì)(key:value)中,value的類型可以是任意數(shù)據(jù)類型
info = { "k1":"string", "k2":123, "k3":False, "k4":(123,"sd","hda"), "k5":["sdf",23], "k6":{"kk1":"sdf","kk2":123 } } print(info) {'k1': 'string', 'k2': 123, 'k3': False, 'k4': (123, 'sd', 'hda'), 'k5': ['sdf', 23], 'k6': {'kk1': 'sdf', 'kk2': 123}}列表、字典不能作為字典的key
info = { 1:"string", False:123, (11,22):False, #[11,22]:123, #{"k1":"v1"}:123 } print(info) {1: 'string', False: 123, (11, 22): False}字典是無(wú)序的,無(wú)法通過(guò)切片的方式讀取元素的值。可以通過(guò)Key值,使用索引讀取某一個(gè)元素
- 可以使用for循環(huán)提取字典中的key、value、key和value
- 字典元素的刪除
字典的常用方法
clear :清空字典中的所有元素
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info.clear() >>> print(info) {}copy:(淺)拷貝
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info_bak = info.copy() >>> print(info_bak) {1: 'string', False: 123, (11, 22): False}fromkeys:根據(jù)序列,創(chuàng)建字典,并為key指定統(tǒng)一的value。使用格式為dict.fromkyes(),而不是"dict類名稱.fromkey()"。fromkeys方法后最多只能只能有2個(gè)參數(shù),分別對(duì)應(yīng)key/value。當(dāng)只有1個(gè)參數(shù)時(shí),創(chuàng)建的字典的value為None
>>> dict.fromkeys(("asdf",123,False)) {'asdf': None, 123: None, False: None} >>> dict.fromkeys(("asdf",123,False),123) {'asdf': 123, 123: 123, False: 123}get:根據(jù)key,獲取value的值。如果key不存在,返回指定的值
>>> info = {1: 'string', False: 123, (11, 22): False} >>> print(info.get(1)) string >>> print(info.get(True)) string >>> print(info.get("None")) None >>> print(info.get("None","space")) spaceitems:返回字典中的keys和values
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info.items() dict_items([(1, 'string'), (False, 123), ((11, 22), False)])keys:返回字典中的Keys
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info.keys() dict_keys([1, False, (11, 22)])pop:刪除字典中指定key對(duì)應(yīng)的鍵值對(duì)。如果key在字典中不存在,則返回None或者指定的值
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info.pop(False) 123 >>> print(info) {1: 'string', (11, 22): False} >>> info.pop("space","NONE") 'NONE' >>> print(info) {1: 'string', (11, 22): False}popitem:刪除字典最后一個(gè)元素,返回值為該元素的key:value
>>> info = {1: 'string', False: 123, (11, 22): False,"k1":"v1","k2":"v2"} >>> info.popitem() ('k2', 'v2') >>> n,m = info.popitem() >>> print(n,m) k1 v1setdefault:設(shè)置字典元素的value值。如果元素中有存在的Key,不做任何操作;如果元素中沒有對(duì)應(yīng)的key,則在字典中的最后添加一個(gè)元素,元素對(duì)應(yīng)的key:value,就是setdefault的2個(gè)參數(shù)
>>> info = {1: 'string', False: 123, (11, 22): False,"k1":"v1","k2":"v2"} >>> info = {1: 'string', False: 123, (11, 22): False} >>> info.setdefault(1,"STR") 'string' >>> print(info) {1: 'string', False: 123, (11, 22): False} >>> info.setdefault("k1","value") 'value' >>> print(info) {1: 'string', False: 123, (11, 22): False, 'k1': 'value'}update:更新字典元素對(duì)應(yīng)的value。如果key不存在的則直接添加這個(gè)key:value,如果存在,則修改這個(gè)key對(duì)應(yīng)的value值
>>> info = {1: 'string', False: 123, (11, 22): False} >>> info.update({1:"new_str"}) >>> print(info) {1: 'new_str', False: 123, (11, 22): False}values:獲取字典元素的value值
>>> info = {1: 'string', False: 123, (11, 22): False} >>> print(info.values()) dict_values(['string', 123, False])可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
根據(jù)對(duì)象元素的數(shù)值是否可被修改,可以將數(shù)據(jù)類型分為可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型。到目前為止,不可變數(shù)據(jù)類型有:整型、字符串、元祖。可變數(shù)據(jù)類型有:列表、字典。可變數(shù)據(jù)類型是能夠被hash的。如果一個(gè)對(duì)象不能被hash的話,那么這個(gè)對(duì)象一定為可變數(shù)據(jù)類型。
轉(zhuǎn)載于:https://www.cnblogs.com/hurst/p/10065134.html
總結(jié)
以上是生活随笔為你收集整理的Python数据类型——整型、布尔型、列表、元祖、字典的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20181127-1附加作业 软件工程原
- 下一篇: st股票和*st股票的区别