Python學習筆記(一) 資料型別

鹽城三爺發表於2018-08-01

資料型別

本來以為資料型別是最最簡單的知識,可是發現網上說法比較亂,我就用java的思維去理解吧。╮(╯▽╰)╭

一.基本資料型別

1.Numbers(數字)

  • 整數
  • 浮點數
  • 複數

2.String(字串)

字串可以單引號如‘abc’或者雙引號“abc”,轉譯字元是\
和Java一樣,說String型別是不可變的,這個很重要

a = "hello"
b = " world"

print("a + b = {}".format(a + b))
#print("a + 2 = {}".format(a + 2))#這個會報TypeError: Can't convert 'int' object to str implicitly
print("a * 2 = {}".format(a * 2))
print("a[0] = {}".format(a[0]))
print("a[-1] = {}".format(a[-1]))
print("a[1:3] = {}".format(a[1:3]))
print("'a' in a = {}".format('a' in a))
print("'h' in a = {}".format('h' in a))
print("'he' in a = {}".format('he' in a))
a + b = hello world
a * 2 = hellohello
a[0] = h
a[-1] = o
a[1:3] = el
'a' in a = False
'h' in a = True
'he' in a = True

3.bool(布林值)

一個布林值只有True、False兩種值,要麼是True,要麼是False(請注意大小寫

其他型別值轉換 bool 值時除了 ”、”“、”””、”“”“”“、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False 為 False 外,其他都為 True 。

bool(-1) #返回True
bool('') #返回False

在數值上下文環境中,True 被當作 1,False 被當作 0

Ture + 3 #4
False + 3 #3

布林值可以用and、or和not運算。

yes = True
no = False
print("yes and no is {}".format(yes and no))
print("yes or no is {}".format(yes or no))
print("not no is {}".format(not no))

執行結果如下

yes and no is False
yes or no is True
not no is True

4.None(空值)

空值是Python裡一個特殊的值,用None表示。

二.集合資料型別

其實也不能叫集合資料型別,Python說的集合是set型別。哎,反正就這麼理解吧。╮(╯▽╰)╭

1.List(可變有序)

list是有序的集合,這個和java的list很像,是有序的。它居然用中括號[ ],是不是很像陣列

names = ["鼕鼕", "pigg", "米可"]

list的索引是從0開始的,names[0]就是”鼕鼕”了。
神奇的是,索引可以是負數,-1指的是倒數一個元素,names[-1]就是”米可”,names[-3]就是”鼕鼕”。
當然索引不可以越界,否則有異常。

names = ["鼕鼕", "pigg", "米可"]

#用len()獲取長度
print("list長度是{}".format(len(names)))

#插入元素
names.insert(2, "天使")
print("插入元素, 最新list內容如下:")
print(names)


#在後面新增元素
names.append("藍波")
print("\n在後面新增元素,最新list內容如下:")
print(names)

#刪除末尾元素
names.pop()
print("\n刪除末尾元素,最新list內容如下:")
print(names)
執行結果如下:
list長度是3
插入元素, 最新list內容如下:
['鼕鼕', 'pigg', '天使', '米可']

在後面新增元素,最新list內容如下:
['鼕鼕', 'pigg', '天使', '米可', '藍波']

刪除末尾元素,最新list內容如下:
['鼕鼕', 'pigg', '天使', '米可']

2.tuple(不可變有序)

tuple叫元組,是不可變的,所以沒有append(),insert(),pop()這些方法。
tuple的不可變是指每個元素的指向不可變,如果某個元素指向一個list,而這個list的值變了,是可以的。

names = ('A', 'B', ['C', 'D'])
names[2][0] = 'X'
names[2][1] = 'Y'
print(names)
執行結果如下:
('A', 'B', ['X', 'Y'])

3.dict(字典)

dict比較像java裡的map,使用鍵-值(key-value)儲存
和list比較,dict有以下幾個特點:

  1. 查詢和插入的速度極快,不會隨著key的增加而變慢;
  2. 需要佔用大量的記憶體,記憶體浪費多。

而list相反:

  1. 查詢和插入的時間隨著元素的增加而增加;
  2. 佔用空間小,浪費記憶體很少。
ageDic = {"張三": 10, "李四": 29, "王五": 36}
print("ageDic['王五']={}".format(ageDic['王五']))
print("ageDic.get('王五')={}".format(ageDic.get('王五')))

ageDic['王五'] = 29
print("修改後,ageDic['王五']={}".format(ageDic['王五']))

ifExist = '王八' in ageDic
print("王八在字典裡?{}".format(ifExist))

ageDic.pop('王五')
print("刪除王五後字典={}".format(ageDic))
執行結果如下:
ageDic['王五']=36
ageDic.get('王五')=36
修改後,ageDic['王五']=29
王八在字典裡?False
刪除王五後字典={'李四': 29, '張三': 10}

4.set(不重複且無序)

Python的set和java的set很類似,是一組不能重複的key

#要建立一個set,需要提供一個list作為輸入集合
#復元素在set中自動被過濾
s = set([1, 2, 3, 3])
print(s)

#通過add(key)方法可以新增元素到set中,可以重複新增,但不會有效果
s.add(1)
s.add(4)
print(s)

#通過remove(key)方法可以刪除元素
s.remove(4)

#兩個set可以做數學意義上的交集、並集等操作
s2 = set([2, 3, 4])
print("s & s2 = {}".format(s & s2))
print("s | s2 = {}".format(s | s2))
執行結果如下:
{1, 2, 3}
{1, 2, 3, 4}
s & s2 = {2, 3}
s | s2 = {1, 2, 3, 4}

相關文章