1. 程式人生 > >python學習03-數據類型

python學習03-數據類型

默認 1.5 mos borde 基本數據類型 order end mod 技術分享

一、基本數據類型——數字

布爾型

  • bool型只有兩個值:True和False
  • 之所以將bool值歸類為數字,是因為我們也習慣用1表示True,0表示False。

以下是布爾值是False的各種情況:

1 bool(0)   
2 bool(None)  
3 bool("") 
4 bool(())  
5 bool([])  
6 bool({}) 

  在Python2.7 中,True和False是兩個內建(built-in)變量,內建變量和普通自定義的變量如a, b, c一樣可以被重新賦值,因此我們可以把這兩個變量進行任意的賦值。

  在Python3.x 中,終於把這個兩變量變成了關鍵字,也就是說再也沒法給這兩變量賦新的值了,從此True永遠指向真對象,False指向假對象,永不分離。

整型

  Python中的整數屬於int類型,默認用十進制表示,此外也支持二進制,八進制,十六進制表示方式。

  進制轉換

  二進制前面以‘0b’標示,八進制前面以‘0o’標示,十六進制以‘0x’標示

1 >>> bin(10)   # 轉換為二進制
2 0b1010
3 >>> oct(10)    # 轉換為八進制 
4 0o12
5 >>> hex(10)   # 轉換為十六進制
6 0xa

  運算

>>> 5%2   # 取余
1
>>> 16%4
0
>>> 2+3   # 加法
5 >>> 2-3 # 減法 -1 >>> 2*3 # 乘法 6 >>> 3/2 # 除法 1.5 >>> 9//2 # 取整除 4 >>> divmod(16,3) # 返回包含商和余數的元組(a // b, a % b) (5, 1) >>> 2**3 # 8

浮點數、復數

二、基本數據類型——字符串

字符串定義

  字符串是一個有序的字符的集合,用於存儲和表示基本的文本信息,‘ ‘或‘‘ ‘‘或‘‘‘ ‘‘‘中間包含的內容稱之為字符串。

字符串特性

  1. 字符串是不可變類型。
  2. 按照從左到右的順序定義字符集合,下標從0開始順序訪問,有序。
  3. 字符串的單引號和雙引號都無法取消特殊字符的含義,如果想讓引號內所有字符均取消特殊意義,在引號前面加r,如name=r‘l\thf‘
  4. unicode字符串與r連用必需在r前面,如name=ur‘l\thf‘

字符串操作

  字符串格式化(format)

‘‘‘
1、使用位置參數
    位置參數不受順序約束,且可以為{},參數索引從0開始,format裏填寫{}對應的參數值。
‘‘‘
>>> msg = "my name is {}, and age is {}"
>>> msg.format("hqs",22)
my name is hqs, and age is 22
>>> msg = "my name is {1}, and age is {0}"
>>> msg.format("hqs",23)
my name is 23, and age is hqs
# 傳入位置參數列表可用 *列表 的形式
>>> li = [lary,18]
>>> my name is {} , age {}.format(*li)
my name is lary , age 18
# 使用索引
>>> li = [larry,12]
>>> my name is {0[0]}, age {0[1]}.format(li)
my name is larry, age 12


‘‘‘
2、使用關鍵字參數
    關鍵字參數值要對得上,可用字典當關鍵字參數傳入值,字典前加**即可
‘‘‘
>>> hash = {name:john , age: 23}
>>> msg = my name is {name}, and age is {age}
>>> msg.format(**hash)
my name is john,and age is 23
>>> msg.format(name="hqs",age=13)
my name is hqs,and age is 13
>>> msg.format(age = 33, name = "zr")
my name is zr, and age is 33
 
‘‘‘
3、填充與格式化
    :[填充字符][對齊方式 <^>][寬度]
‘‘‘
>>> {0:*<10}.format(10)      # 左對齊
10********
>>> {0:*<10}.format("hqs")      # 左對齊
hqs*******
>>> {0:*^10}.format("hqs")      # 居中對齊
***hqs****
>>> {0:*>10}.format(10)      # 右對齊
********10

‘‘‘
4、精度與進制
‘‘‘
>>> {0:.2f}.format(1/3)     # 浮點數
0.33
>>> {0:b}.format(18)    # 二進制
10010
>>> {0:o}.format(18)    # 八進制
22
>>> {0:x}.format(18)    # 十六進制
12
>>> {:,}.format(13111313341313)    # 千分位格式化
13,111,313,341,313

  常用操作

#索引
s = hello
>>> s[1]
e
>>> s[-1]
o


>>> s.index(e)
1


#查找
>>> s.find(e)
1
>>> s.find(i)
-1


#移除空白
s =   hello,world!  
s.strip()
s.lstrip()
s.rstrip()
s2 = ***hello,world!***
s2.strip(*)

#長度
>>> s = hello,world
>>> len(s)
11

#替換
>>> s = hello world
>>> s.replace(h,H)
Hello world
>>> s2 = hi,how are you?
>>> s2.replace(h,H)
Hi,How are you?

#切片
>>> s = abcdefghigklmn
>>> s[0:7]
abcdefg
>>> s[7:14]
higklmn
>>> s[:7]
abcdefg
>>> s[7:]
higklmn
>>> s[:]
abcdefghigklmn
>>> s[0:7:2]
aceg
>>> s[7:14:3]
hkn
>>> s[::2]
acegikm
>>> s[::-1]
nmlkgihgfedcba

首尾操作及統計字符

 1 >>> name = "HuangQiuShi"
 2 >>> name.capitalize()   # 首字母大寫
 3 Huangqiushi
 4 >>> name.endswith("Li")  # 判斷字符串是否以 Li結尾
 5 False
 6 >>> name.endswith("hi")  # 判斷字符串是否以 hi結尾
 7 True
 8 
 9 >>> name.center(50,-)   # 字符串居中顯示
10 -------------------HuangQiuShi--------------------
11 >>> name.rjust(50,-)
12 ---------------------------------------HuangQiuShi
13 >>> name.ljust(50,-)
14 HuangQiuShi---------------------------------------
15 
16 >>> name.count("shi")   # 統計‘shi‘出現次數
17 0
18 >>> name.count("i")
19 2

三、基本數據類型——列表

  定義:[]內以逗號分隔,按照索引,存放各種數據類型,每個位置代表一個元素。

  特性

  1.可存放多個值

  2.按照從左到右的順序定義列表元素,下標從0開始順序訪問,有序

  技術分享圖片

  3.可修改指定索引位置對應的值,可變

創建列表

# 列表創建(把逗號分隔的不同的數據項使用方括號括起來即可)
list_test = [阿福,收稅,snake]

切片:取多個元素

>>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
>>> names[1:4]  #取下標1至下標4之間的數字,包括1,不包括4
[Tenglan, Eric, Rain]
>>> names[1:-1] #取下標1至-1的值,不包括-1
[Tenglan, Eric, Rain, Tom]
>>> names[0:3] 
[Alex, Tenglan, Eric]
>>> names[:3] #如果是從頭開始取,0可以忽略,跟上句效果一樣
[Alex, Tenglan, Eric]
>>> names[3:] #如果想取最後一個,必須不能寫-1,只能這麽寫
[Rain, Tom, Amy] 
>>> names[3:-1] #這樣-1就不會被包含了
[Rain, Tom]
>>> names[0::2] #後面的2是代表,每隔一個元素,就取一個
[Alex, Eric, Tom] 
>>> names[::2] #和上句效果一樣
[Alex, Eric, Tom]

追加、插入

>>> list_test.append(2017)
>>> list_test
[阿福, 收稅, snake, 2017]
>>> list_test.insert(2,"強行從snake前面插入")
>>> list_test
[阿福, 收稅, 強行從snake前面插入, snake, 2017]
>>> list_test.insert(0,"強行插入最前")
>>> list_test
[強行插入最前, 阿福, 收稅, 強行從snake前面插入, snake, 2017]

修改

>>> list_test = [強行插入最前, 阿福, 收稅, 強行從snake前面插入, snake, 2017]
>>> list_test[2] = "換了一個人"
>>> list_test
[強行插入最前, 阿福, 換了一個人, 強行從snake前面插入, snake, 2017]

刪除

# 刪除指定位置元素
>>> del list_test[2]
>>> list_test
[強行插入最前, 阿福, 強行從snake前面插入, snake, 2017]
# 刪除指定元素
>>> list_test.remove("snake")
>>> list_test
[強行插入最前, 阿福, 強行從snake前面插入, 2017]
# 刪除列表最後一個值
>>> list_test.pop()
2017
>>> list_test
[強行插入最前, 阿福, 強行從snake前面插入]

擴展

>>> b = [1,3,"asdad"]
>>> list_test.extend(b)
>>> list_test
[強行插入最前, 阿福, 強行從snake前面插入, 1, 3, asdad]

拷貝

>>> list_test_copy = list_test.copy()
>>> list_test_copy
[強行插入最前, 阿福, 強行從snake前面插入, 1, 3, asdad]

統計

>>> list_test.append("阿福")
>>> list_test.count("阿福")
2
>>> list_test
[強行插入最前, 阿福, 強行從snake前面插入, 1, 3, asdad, 阿福]

排序&翻轉

>>> list_test.sort()     # 不同數據類型不能一起排序
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: < not supported between instances of int and str
>>> list_test[-3] = 3   # 修改為字符串
>>> list_test[-4] = 1
>>> list_test
[強行從snake前面插入, 強行插入最前, 阿福, 1, 3, asdad, 阿福]
>>> list_test.sort()
>>> list_test
[1, 3, asdad, 強行從snake前面插入, 強行插入最前, 阿福, 阿福]
>>> list_test.reverse()   # 翻轉
>>> list_test
[阿福, 阿福, 強行插入最前, 強行從snake前面插入, asdad, 3, 1]

獲取下標

>>> list_test
[阿福, 阿福, 強行插入最前, 強行從snake前面插入, asdad, 3, 1]
>>> list_test.index("阿福")
0
>>> list_test.index("asdad")
4

python學習03-數據類型