Python數(shù)據(jù)類型詳解

  • Python(英語發(fā)音:/?pa?θ?n/), 是一種面向?qū)ο笕呷住⒔忉屝陀嬎銠C程序設(shè)計語言旭等,由Guido van Rossum于1989年發(fā)明俄删,第一個公開發(fā)行版發(fā)行于1991年。
  • Python是純粹的自由軟件鹃唯, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議 。
  • Python語法簡潔清晰薛躬,特色之一是強制用空白符(white space)作為語句縮進
    • Python 是一種解釋型語言: 這意味著開發(fā)過程中沒有了編譯這個環(huán)節(jié)俯渤。類似于PHP和Perl語言
    • Python 是交互式語言: 這意味著,您可以在一個Python提示符型宝,直接互動執(zhí)行寫你的程序
    • Python 是面向?qū)ο笳Z言: 這意味著Python支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對象的編程技術(shù)
    • Python是初學(xué)者的語言:Python 對初級程序員而言八匠,是一種偉大的語言絮爷,它支持廣泛的應(yīng)用程序開發(fā),從簡單的文字處理到 WWW 瀏覽器再到游戲

一. Mac系統(tǒng)下搭建Python環(huán)境

  • 首先到Python官網(wǎng) 下載安裝最新版本的Python, 安裝比較無腦,一路按下去就OK
  • 安裝Python開發(fā)軟件, 推薦兩款開發(fā)軟件PycharmSublime Text, 這里只介紹Pycharm的安裝和破解方法
  • Python的開發(fā)環(huán)境和開發(fā)軟件都搞定之后,下面我們就來看看Python的基本語法吧
  • 測試代碼詳見 GitHub地址

二. 基本語法

1. 輸出格式

Python的輸出語法和Swift的輸出一樣

# 輸出
print("Hello Python")

2. 注釋

  • python中單行注釋采用 # 開頭梨树。
  • python 中多行注釋使用三個單引號 ''' 或三個雙引號 """

# 這里是單行注釋


'''
這是多行注釋坑夯,使用單引號。
這是多行注釋抡四,使用單引號柜蜈。
這是多行注釋,使用單引號指巡。
'''

"""
這是多行注釋淑履,使用雙引號。
這是多行注釋藻雪,使用雙引號秘噪。
這是多行注釋,使用雙引號勉耀。
"""

3. 變量

Python中的變量不需要聲明指煎,變量的賦值操作既是變量聲明和定義的過程。每個變量在使用前都必須賦值便斥,變量賦值以后該變量才會被創(chuàng)建

 counter = 100 # 賦值整型變量
 miles = 1000.0 # 浮點型
 name = "John" # 字符串

Python允許你同時為多個變量賦值, 也可以為多個對象指定多個變量至壤。例如:

a = b = c = 1 

# 多變量賦值
a, b, c = 1, 2, "jun" 

三. 標(biāo)準(zhǔn)數(shù)據(jù)類型

  • Python有五個標(biāo)準(zhǔn)的數(shù)據(jù)類型:
    • Numbers(數(shù)字)
    • String(字符串)
    • List(列表)
    • Tuple(元組)
    • Dictionary(字典)

1. Numbers(數(shù)字)

  • Number是不可被改變的數(shù)據(jù)類型, 當(dāng)你指定一個值時,Number對象就會被創(chuàng)建
  • Python支持四種不同的數(shù)值類型:
    • int(有符號整型)
    • long(長整型[也可以代表八進制和十六進制])
    • float(浮點型)
    • complex(復(fù)數(shù))
  • 復(fù)數(shù): 和數(shù)學(xué)中的復(fù)數(shù)含義一樣, 復(fù)數(shù)由實數(shù)部分和虛數(shù)部分構(gòu)成枢纠,可以用a + bj, 或者complex(a, b)表示像街, 復(fù)數(shù)的實部a和虛部b都是浮點型
int long float complex
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3+e18 .876j
-0490 535633629843L -90. -.6545+0J
-0x260 -052318172735L -32.54e100 3e+26J
0x69 -4721885298529L 70.2-E12 4.53e-7j

2. Python字符串

  • 字符串或串(String)是由數(shù)字、字母晋渺、下劃線組成的一串字符
  • Swift中的字符串一樣, 每一個字符都有一個與之對應(yīng)的索引
  • python的字串列表有2種取值順序:
    • 從左到右索引默認(rèn)0開始的宅广,最大范圍是字符串長度少1
    • 從右到左索引默認(rèn)-1開始的,最大范圍是字符串開頭
    • 獲取某一部分字符串的格式: [頭下標(biāo):尾下標(biāo)]
# 字符串
str = 'Hello Python'

# 1. 輸出完整字符串
print("完整字符串--" + str)
# 結(jié)果輸出:

# 2. 輸出第一個字符
print("第一個字符--" + str[0])

# 3. 輸出第三到七個字符
print("第3-7個字符--" + str[2:6])

# 4. 輸出低2個字符開始的所有字符
print("第2個開始的所有字符--" + str[1:])

# 5. 拼接字符串
# 像上面一樣, 字符串用 `+`拼接
print("拼接--" + str)

# 6. 輸出3次
# `*` 表示重復(fù)操作, 需要重復(fù)操作幾次, 后面跟上次數(shù)即可
print(str * 3)

# 7. 輸出最后一個字符
print("最后一個字符--" + str[-1])

# 8. 輸出倒數(shù)第二個字符
print("倒數(shù)第二個字符--" + str[-2])

下面是以上語法的輸出結(jié)果

/*
完整字符串--Hello Python
第一個字符--H
第3-7個字符--llo 
第2個開始的所有字符--ello Python
拼接--Hello Python
Hello PythonHello PythonHello Python
最后一個字符--n
倒數(shù)第二個字符--o
*/

3. List(列表)

  • List(列表) 是 Python 中使用最頻繁的數(shù)據(jù)類型, 和C語言中的數(shù)組一樣, 語法操作和上述字符串類似
  • 列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)些举。它支持字符,數(shù)字俭厚,字符串甚至可以包含列表(所謂嵌套)户魏。
  • 列表用[ ]標(biāo)識。是python最通用的復(fù)合數(shù)據(jù)類型
  • 列表中的值得分割也可以用到變量[頭下標(biāo):尾下標(biāo)]挪挤,就可以截取相應(yīng)的列表
    • 從左到右索引默認(rèn)0開始的
    • 從右到左索引默認(rèn)-1開始
    • 下標(biāo)可以為空表示取到頭或尾叼丑。
  • 加號(+)是列表連接運算符,星號(*)是重復(fù)操作
# List 列表
list1 = [12, 34, 3.14, 5.3, 'titan']
list2 = [10, 'jun']

# 1.完整列表
print(list1)

# 2.列表第一個元素
print(list1[0])

# 3.獲取第2-3個元素
print(list1[1:2])

# 4.獲取第三個到最后的所有元素
print(list1[2:])

# 5.獲取最后一個元素
print(list1[-1])

# 6.獲取倒數(shù)第二個元素
print(list1[-2])

# 7.獲取最后三個元素
print(list1[-3:-1])

# 8.合并列表
print(list1 + list2)

# 9.重復(fù)操作兩次
print(list2 * 2)

上述語句輸出結(jié)果如下

[12, 34, 3.14, 5.3, 'titan']
12
[34]
[3.14, 5.3, 'titan']
titan
5.3
[3.14, 5.3]
[12, 34, 3.14, 5.3, 'titan', 10, 'jun']
[10, 'jun', 10, 'jun']

4. 元組

  • 元組是另一個數(shù)據(jù)類型(Python中的元組和Swift中的元組類似)
  • 元組用"()"標(biāo)識扛门。內(nèi)部元素用逗號隔開
  • 元素不能二次賦值鸠信,相當(dāng)于只讀列表
# 元組
tuple1 = (12, 34, 3.14, 5.3, 'titan')
tuple2 = (10, 'jun')

# 1.完整元組
print(tuple1)

# 2.元組一個元素
print(tuple1[0])

# 3.獲取第2-3個元素
print(tuple1[2:3])

# 4.獲取第三個到最后的所有元素
print(tuple1[2:])

# 5.獲取最后一個元素
print(tuple1[-1])

# 6.獲取倒數(shù)第二個元素
print(tuple1[-2])

# 7.獲取最后三個元素
print(tuple1[-3:-1])

# 8.合并元組
print(tuple1 + tuple2)

# 9.重復(fù)操作兩次
print(tuple2 * 2)

輸出結(jié)果

(12, 34, 3.14, 5.3, 'titan')
12
(3.14,)
(3.14, 5.3, 'titan')
titan
5.3
(3.14, 5.3)
(12, 34, 3.14, 5.3, 'titan', 10, 'jun')
(10, 'jun', 10, 'jun')

這里注意下, 當(dāng)截取某一范圍的數(shù)據(jù)時, 類似[2:3], [-3:-1], 實際的取值范圍是含左不含右, 等同于數(shù)學(xué)中的半開半閉區(qū)間(左閉右開)--[2, 3)

# 因元組的元素是只讀的, 不能二次賦值, 所以請注意, 以下寫法是錯誤的
# 運行會報錯: TypeError: 'tuple' object does not support item assignment
tuple2[0] = 20
tuple2[1] = "titan"

5. 字典

  • 字典(dictionary)是除列表以外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。
  • 列表是有序的對象集合论寨,字典是無序的對象集合星立。
  • 兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過鍵來存取的爽茴,而不是通過索引存取。
  • 字典用"{ }"標(biāo)識绰垂。字典由索引(key)和它對應(yīng)的值value組成
  • 這里的字典的key值, 不僅僅可以用字符串, 還可以用Number類型
# 字典
dict1 = {'name': 'jun', 'age': 18, 'score': 90.98}
dict2 = {'name': 'titan'}

# 完整字典
print(dict2)

# 1.修改或添加字典元素
dict2['name'] = 'brother'
dict2['age'] = 20
dict2[3] = '完美'
dict2[0.9] = 0.9
print(dict2)

# 2.根據(jù)鍵值獲取value
print(dict1['score'])

# 3.獲取所有的鍵值
print(dict1.keys())

# 4.獲取所有的value值
print(dict1.values())

# 5.刪除字典元素
del dict1['name']
print(dict1)

# 6.清空字典所有條目
dict1.clear()
print(dict1)

# 7.刪除字典
dict3 = {2: 3}
del dict3
# 當(dāng)該數(shù)組唄刪除之后, 在調(diào)用會報錯
# print(dict3)

上述語句的輸出結(jié)果如下

{'name': 'titan'}
{'name': 'brother', 'age': 20, 3: '完美', 0.9: 0.9}
90.98
dict_keys(['name', 'age', 'score'])
dict_values(['jun', 18, 90.98])
{'age': 18, 'score': 90.98}
{}

6. 集合

  • 集合對象是由一組無序排列的值組成的序列室奏,集合成員可以做字典中的鍵
  • 集合sets有兩種不同的類型:可變集合set和不可變集合frozenset
# 集合
s = {1, 2, 3, 4}

# 1. 輸出
print(s)

# 2. 用set轉(zhuǎn)化已存在的類型, 可以去重
# 集合不會存在相同的元素
myList = [1, 2, 3, 3, 4, 4, 4]
mySet = set(myList)
print(mySet)

# 3. 添加元素(已經(jīng)存在的元素, 無法添加)
mySet.add(2)
print(mySet)
mySet.add(6)
print(mySet)

# 4.刪除元素
mySet.remove(2)
print(mySet)

# 5.方法difference
set1 = {1, 2, 4}
set2 = {1, 2, 5, 6}
# 用set1和set2做difference
diff = set1.difference(set2)
print(diff)
# 輸出: {4}

# 用set2和set1做difference
diff2 = set2.difference(set1)
print(diff2)
# 輸出: {5, 6}

# 6. 返回相同的元素
inter = set1.intersection(set2)
print(inter)
# 輸出: {1, 2}

# 7.合并集合
union1 = set1.union(set2)
print(union1)
# 輸出: {1, 2, 4, 5, 6}

7. 數(shù)據(jù)類型轉(zhuǎn)換

  • 有時候,我們需要對數(shù)據(jù)內(nèi)置的類型進行轉(zhuǎn)換劲装,數(shù)據(jù)類型的轉(zhuǎn)換胧沫,你只需要將數(shù)據(jù)類型作為函數(shù)名即可。
  • 以下幾個內(nèi)置的函數(shù)可以執(zhí)行數(shù)據(jù)類型之間的轉(zhuǎn)換占业。這些函數(shù)返回一個新的對象绒怨,表示轉(zhuǎn)換的值
函數(shù) 描述
int(x) 將x轉(zhuǎn)換為一個整數(shù)
long(x) 將x轉(zhuǎn)換為一個長整數(shù)
float(x) 將x轉(zhuǎn)換到一個浮點數(shù)
complex(real [,imag]) 創(chuàng)建一個復(fù)數(shù)
str(x) 將對象 x 轉(zhuǎn)換為字符串
repr(x) 將對象 x 轉(zhuǎn)換為表達式字符串
eval(str) 用來計算在字符串中的有效Python表達式,并返回一個對象
tuple(s) 將序列 s 轉(zhuǎn)換為一個元組
list(s) 將序列 s 轉(zhuǎn)換為一個列表
set(s) 轉(zhuǎn)換為可變集合
dict(d) 創(chuàng)建一個字典。d 必須是一個序列 (key,value)元組谦疾。
frozenset(s) 轉(zhuǎn)換為不可變集合
chr(x) 將一個整數(shù)轉(zhuǎn)換為一個字符
unichr(x) 將一個整數(shù)轉(zhuǎn)換為Unicode字符
ord(x) 將一個字符轉(zhuǎn)換為它的整數(shù)值
hex(x) 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串
oct(x) 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串

使用示例如下

# 數(shù)據(jù)類型轉(zhuǎn)換
dic = {'name': 'jun', 'age': 18}
# 1.將x轉(zhuǎn)換為一個整數(shù)
print(int(9.89))
print(int('9'))
# print(int('8.89')) # 這樣的寫法會報錯

# 2.創(chuàng)建一個復(fù)數(shù)
print(complex(1, 2))
print(complex('3'))
print(complex(-2, -4))

# 3.轉(zhuǎn)換為一個浮點型
print(float(9))
print(float('12.45'))

# 4.轉(zhuǎn)換為字符串
print(str(9))
print(str(9.09))
print(str('89'))
print(str(dic))

# 5.轉(zhuǎn)換為表達式字符串
print(repr(9.09))
print(repr(9 + 10))
print(repr(dic))

# 6.用來計算在字符串中的有效Python表達式,并返回一個對象
print(eval('3*9'))
print(eval("dic['age']*2"))

# 7.將序列轉(zhuǎn)換為一個元組
list7 = [1, 2, 3]
print(tuple(list7))

# 8.將序列轉(zhuǎn)換為一個列表
tuple8 = ('a', 's', 'd')
print(list(tuple8))

# 9.轉(zhuǎn)換為可變集合
print(set(list7))

# 10.創(chuàng)建一個字典
dic10 = dict([('name', 'titan'), ('age', 17)])
print(dic10)

# 11.轉(zhuǎn)換為不可變集合
print(frozenset({1, 2}))

# 12.將一個整數(shù)轉(zhuǎn)換為一個字符
# 48對應(yīng)字符'0'(參照ASCII碼表)
print(chr(122))

# 13.將一個字符轉(zhuǎn)換為它的整數(shù)值
print(ord('0'))

# 14.將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串
print(hex(10))

# 15.將一個整數(shù)轉(zhuǎn)換為一個八進制字符串
print(oct(10))

  • 對于Python語言, 我也是小白, 正在努力學(xué)習(xí)中, 文中如有不足之處, 還望多多指教
  • 測試代碼詳見 GitHub地址
  • 后期會持續(xù)更新相關(guān)文章
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末震叙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彻桃,更是在濱河造成了極大的恐慌恕稠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件樊诺,死亡現(xiàn)場離奇詭異仗考,居然都是意外死亡,警方通過查閱死者的電腦和手機词爬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門秃嗜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顿膨,你說我怎么就攤上這事锅锨。” “怎么了恋沃?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵必搞,是天一觀的道長。 經(jīng)常有香客問我囊咏,道長恕洲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任梅割,我火速辦了婚禮霜第,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘户辞。我一直安慰自己泌类,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布底燎。 她就那樣靜靜地躺著刃榨,像睡著了一般弹砚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喇澡,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天迅栅,我揣著相機與錄音,去河邊找鬼晴玖。 笑死读存,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呕屎。 我是一名探鬼主播让簿,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秀睛!你這毒婦竟也來了尔当?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蹂安,失蹤者是張志新(化名)和其女友劉穎椭迎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田盈,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡畜号,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了允瞧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片简软。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖述暂,靈堂內(nèi)的尸體忽然破棺而出痹升,到底是詐尸還是另有隱情,我是刑警寧澤畦韭,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布疼蛾,位于F島的核電站,受9級特大地震影響艺配,放射性物質(zhì)發(fā)生泄漏据过。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一妒挎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧西饵,春花似錦酝掩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽原朝。三九已至,卻和暖如春镶苞,著一層夾襖步出監(jiān)牢的瞬間喳坠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工茂蚓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留壕鹉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓聋涨,卻偏偏與公主長得像晾浴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牍白,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容