Python數據類型


一、Python有8種數據類型,包括Boolean(布爾值)+None(空值)+六個標准數據類型:
  • 不可變數據(3 個):Number(數字)、String(字符串)、Tuple(元組);
  • 可變數據(3 個):List(列表)、Dictionary(字典)、Set(集合)
1.1、查看變量的數據類型:type() 和isinstance()
  • type() 不會認為子類是一種父類類型,不考慮繼承關系。
  • isinstance() 會認為子類是一種父類類型,考慮繼承關系。
  如果要判斷兩個類型是否相同推薦使用 isinstance()。
  eg:
if type(one) != int or type(two) != int:
	print "THE NUMBER IS WRONG"

1.2 、數字Numbers

(1)python支持三種不同的數值類型

  • int:整形(整型是沒有限制大小的,可以當作 Long 類型使用)
  • float:浮點型
  • complex:復數
注:計算機里如何區分正數負數?我們規定最高位是符號位。為0是正,為1負。所以最高位是不可以參加計算的。比如二進制數1000最高位是符號位的話,轉十進制不是8,而是負0(正0的二進制形式是0000)
 
(2)轉換方法:
  • int(x) 轉換成一個integer
  • long(x) 轉換成一個long interger(python3中沒有long)
  • float(x) 轉換成一個浮點數
  • str():轉換為字符串
  • list():轉換為列表
  • eval():轉換為字典
  • 隨機數函數:
    •   random() 隨機生成下一個實數,它在[0,1)范圍內
    •   uniform(x, y) 隨機生成下一個實數,它在[x,y]范圍內
(3)注意:
  • Python可以同時為多個變量賦值,如a, b = 1, 2。
  • 值的除法包含兩個運算符:/ 返回一個浮點數,// 返回一個整數。
  • 在混合計算時,Python會把整型轉換成為浮點數。
1.3、字符串String
  使用引號( ' )、雙引號( " )、三引號( ''' 或 """ ) 來表示字符串。其中三引號可以由多行組成,編寫多行文本的快捷語法

(1)字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始

(2)字符串格式化兩種方法:

  • 占位符% : 將一個值插入到一個有字符串格式符 %s 的字符串中
    • %s 格式化字符串;
    • %d 格式化整數)
    eg:print "My name is %s and weight is %d kg!" % ('Zara', 21)
  • str.format():增強了字符串格式化的功能。基本語法是通過 {} 和 : 來代替以前的 %
    •  {} 格式化字符串
    • : 格式化數字

(3)轉義字符: 使用反斜杠(\)轉義特殊字符

(4)比較字符串:python可以使用比較運算符(==、!=、>、<...)通過比較字符的數值ASCII代碼實現比較字符串大小

(5)字符串前面加r:意味着該字符串將被視為原始字符串,這意味着所有轉義碼都將被忽略
(6)字符串前面加u:代表編碼是unicode
(7)字符串處理函數:
  • strip():從原始字符串的開頭和結尾刪除給定的字符。默認刪除字符串開頭和結尾的空格,並返回前后不帶空格的相同字符串
    格式:str.strip([characters])
  • startsWith():用來判斷當前字符串是否是以另外一個給定的子字符串“開頭”,根據判斷結果返回 true 或 false。
    格式:str.startsWith(searchString [, position]);
        searchString要搜索的子字符串。
        position在 str 中搜索 searchString 的開始位置,默認值為 0開頭處。
  • split():拆分字符串。通過指定分隔符對字符串進行切片,並返回分割后的字符串列表
    格式:str.split(str="",num=string.count(str))[n]
    • str:表示為分隔符,默認為空格,但是不能為空('')
    • num:表示分割次數
    • [n]:表示選取第n個分片
str = "this is string example....wow!!!"
print (str.split( ))
#輸出:['this', 'is', 'string', 'example....wow!!!']
 
1.4、列表List
  列表用“ [ ] ”標識,是 python 最通用的復合數據類型,可包含任何類型的值。
  語法:列表名=[值1,值2]
      取值:列表名[1] (索引值以 0 為開始值,-1 為從末尾的開始位置)

(1)列表元素指向其值,列表是可變的,列表屬於棧---后進先出(隊列---先進先出)

    • (pop:刪除末尾/棧頂元素)
    • (push:在末尾/棧頂添加元素)

(2)列表操作:

    1. 增:列表[0:0]=[元素](注意:這種方式是往列表中的第一個位置添加元素)
    2. 刪:
      • 刪除單個元素:del 列表[下標]
      • 刪除多個元素(通過切片):del 列表[起始位置:結束位置]
    3. 改:列表[下標]=新值
    4. 查:
      • 獲取單個值:列表[下標],下標可以為負數,負數是從倒數獲取
      • 獲取多個值:列表[起始位置:結束位置:步長],起始位置和結束位置可以省略不寫;如果開始位置不寫,則會從第一個元素開始獲取;如果結束位置不寫,則會獲取到最后一個元素;如果都不寫,則為列表的復制
     5.遍歷:遍歷list列表的元素,使用for循環
 
(3)列表運算:
  • +:兩個列表相加,包含兩個列表的所有元素
  • *:列表元素重復
  • in:檢查元素是否存在
  • not in:檢查元素是否不存在
(4)列表方法:
  • list.index(x):獲取x的索引
  • list.append(x):在列表最后追加元素
  • list.extend(x,y):在列表最后追加多個元素
  • list.insert(i, x): 在索引i處插入x
  • list.pop(i, x): 刪除索引處元素,沒有指定i則刪除最后一個元素
  • list.remove(x) :移除x
  • list.clear():清空列表
  • list.count(x):統計x在列表中出現的次數
(5)列表排序:
  • list.reverse():將列表中元素反轉排序
  • list.sort():對列表內容進行正向排序,sort排序方法是直接修改原列表list排序方法
  • (comp:降序排序;cmp:升序排序)
  • list.sorted():可以保留原列表,又能得到已經排序好的列表(sorted()方法可以用在任何數據類型序列中,返回的總是一個列表形式)
(6)列表函數:
  • len(list) :列表長度
  • max(list):返回列表元素中的最大值
  • min(list):返回列表元素中的最小值
 
(7)自引用 :snake[1]=snake [1,[...],3 ]
 
1.5、元組Tuple
  元組用"()"標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列表
 
1.6、字典Dictionary
  字典當中的元素是通過鍵來存取的,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合
  格式:d = {'key1' : value1, 'key2' : value2 }
  鍵必須是唯一的,但值則不必,值可以取任何數據類型,但鍵必須是不可變(數字,字符串、元組)
(1)字典取值:
  • person = {'name':'xiaoming', 'age':18}
  • # 第一種 若鍵不存在則會拋出KeyError異常
  • person['city']
  • # 第二種 不會拋出異常,不存在則返回None,也可以設置默認返回值
  • person.get('city',"上海")
  • # 第三種 與第二種類似,區別在於setdefault方法會更新字典
  • person.setdefault('city', '上海')
(2)修改字典:字典名[key]=value,如果key存在則修改,如果不存在則創建一個新的key和value person["name"]="小鹿"
(3)刪除字典:def dic[] ;
   清空字典內所有元素: dict.clear()
(4)遍歷dict:
  • keys():獲取所有key ;.
  • values():獲取所有值;
  • items() 方法:以列表返回可遍歷的鍵值對
for key in person.keys():
    print(f"{key}:{person.get(key)}")

for value in person.values():
    print(f"{value}")

for key, value in person.items():
    print(f"{key}:{value}")
(5)構造函數 dict() :可以直接從鍵值對序列中構建字典如下:
  eg:a = dict([('Ctrip', 1), ('Google', 2), ('Taobao', 3)])
    {'Ctrip': 1, 'Google': 2, 'Taobao': 3}  
1.7、集合:(set)
  是一個無序的不重復元素序列。可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
  創建格式:parame = {value01,value02,...} 或者 set(value)
(1)集合中判斷元素是否存在:x in s
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
  print(basket)                      # 這里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
'orange' in basket                 # 快速判斷元素是否在集合內
True
'crabgrass' in basket
False
(2)集合運算:
a = set('abracadabra')
b = set('alacazam')

a - b                              # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}
a | b                              # 集合a或b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
a & b                              # 集合a和b中都包含了的元素{'a', 'c'}
a ^ b                              # 不同時包含於a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}
 
2、序列:值一組按順序排列的值(字符串、元組、列表)
  • 正索引為0,負索引為-1,為空表示頭或尾
  • 切片表達法:變量 [頭下標:尾下標],從索引“頭下標”到“尾下標-1”

 

s = 'ilovepython'
print(s[1:5])     #結果是love


array = [1, 2, 5, 3, 6, 8, 4]
array[1:] #列出1以后的。輸出[2, 5, 3, 6, 8, 4]
array[:-1] #列出-1之前的。輸出[1, 2, 5, 3, 6, 8]
array[3:-3] #列出3到-3之間的。輸出[3]
array[::-1]#將列表反轉輸出[4,8,6,3,5,2,1]
array[::2]#每隔兩個下標輸出[1, 5, 6, 4]

 

(1)加號 + 是列表連接運算符,星號 * 是重復操作。

(2)使用len()計算長度

(3)x in s,當s位於x返回true,否則返回false


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM