python 基礎數據類型 (一)

字符串

字符串是最 Python 中常用的數據類型,可以對字符串進行索引,切片及迭代。

在python中字符串是不可變的,一旦聲明,不能改變;對字符串變量的賦值和修改實際上是新建了一個相同變量名的對象。
注意:由於字符串是不可變的,在使用索引修改字符串是不允許的

var1 = 'python'
print id(var1)
var1 = 'PHP'
print id(var1)
 
var1 = 'python'
print id(var1)
var1 = var1 + 'hello world'  
print id(var1)
31385280
37524841
41536543
38144556
對比發現修改這些對字符串的修改、賦值實際上是創建了一個新的變量(它們的地址都不相同)

字符串的基本操作

+           :string1+string2            #聯接字符串,將後一個串鏈接到前一個串的後面
*           :string*n                   #創建一個新字符串重複n次原來的串
[]          :string[n]                  #從字符串中獲取對應位置的一個字符
[:]         :string[n:m]                #截取字符串,如果爲:m從頭到m如果爲n:從n到尾
in          :char in string             #判斷一個字符(串)是否在串中,如果在返回爲真(True)
not in      :char not in string         #判斷一個字符(串)是否不在串中,如果在返回爲真(True)
r/R         :r'hello\r\nworld'   R'hello\r\nworld'  #禁止轉義字符的實際意義,整個字符爲原始意義
%           :'hello %s'%('world')       #格式化字符串
len()       : 長度len(s),與s.__len__()功能相同(其實len(s)本來就是調用的s.__len__())

Unicode字符串
python定義一個 Unicode 字符串和定義一個普通字符串一樣

u'Hello World !'
但是它還可以自動轉換Unicode-Escape 編碼的字符
u'Hello\u0020World !' = u'Hello World !'

常用的幾個方法

可以使用dir(str)查看有哪些內建函數

string = ''
string.find('str')                  #成功返回所在字符串的下標,失敗返回負數
string.isalnum()                    #字符串的元素是否全爲數字,是:true,否:false
string.replace('old', 'new')        #替換字符串中的‘on’爲‘oner’,並返回新的字符串
string.split('str')                 #按照'str'拆分字符串,返回一個列表(但注意,不要讓被拆分的字符串長度(str)大於原字符串(string)的長度)
string.strip()                      #默認截掉字符串兩邊的空格,也可帶參數:string.strip(str) 截掉字符串兩端的str,如果有的話
string.count('sub')                 #統計'sub'在字符串中出現的次數
','.join(object)                    #以','爲分割,合併一個可迭代的對象爲字符串(但迭代的值必須爲string)

使用格式化字符串比以‘+’連接字符串效率高(但是我測試了100W次,沒發現大的區別)
就好像range和xrange,當次數小於10W時range佔得資源並不多。效率也要高一些當大於100W時xrange效率更高


列表

基本操作

len([1, 2, 3])                    3                        長度
[1, 2, 3] + [4, 5]             [1, 2, 3, 4, 5]             組合
['Hi!'] * 3                   ['Hi!','Hi!','Hi!']          重複
3 in [1, 2, 3]                  True                       元素是否存在於列表中
for x in [1, 2, 3]: print x,    1 2 3                      迭代
del l[2] (l = [1,2,3])          [1,3]                      刪除元素
del l (l = [1,2,3])              None                      刪除列表

內建函數

list.append(obj)            在列表末尾添加新的對象
list.count(obj)             統計某個元素在列表中出現的次數
list.extend(seq)            在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
list.index(obj)             從列表中找出某個值第一個匹配項的索引位置
list.insert(index, obj)     將對象插入列表
list.pop(obj=list[-1])      移除列表中的一個元素(默認最後一個元素),並且返回該元素的值
list.remove(obj)            移除列表中某個值的第一個匹配項
list.reverse()              反向列表中元素
list.sort([func])           對原列表進行排序


元組

元組與列表類似,但是元組的元素不能修改

t = (1,2,3,4)
t[1] = 0     #這種方式是錯誤的
同樣也不能使用del單獨刪除某一元素,但可以刪除整個元組

t1 = (1,2)
t2 = (3,4)
t3 = t1 + t2    #合併兩個元組稱爲新的元組

tuple(obj)可以將可迭代的對象生成一個新的元組


字典

基本操作

dic['key'] = value        修改或增加字典元素
del dic['key']            刪除字典元素
del dic                   刪除字典
內置函數

dic.clear()                        刪除字典內所有元素
dic.copy()                         返回一個字典的淺複製
dic.fromkeys()                     創建一個新字典,以序列seq中元素做字典的鍵,val爲字典所有鍵對應的初始值
dic.get(key, default=None)         返回指定鍵的值,如果值不在字典中返回default值
dic.has_key(key)                   如果鍵在字典dict裏返回true,否則返回false
dic.items()                        以列表返回可遍歷的(鍵, 值) 元組數組
dic.keys()                         以列表返回一個字典所有的鍵
dic.setdefault(key, default=None)  和get()類似, 但如果鍵不已經存在於字典中,將會添加鍵並將值設爲default
dic.update(dict2)                  把字典dict2的鍵/值對更新到dict裏
dic.values()                       以列表返回字典中的所有值


集合

集合與列表相似,但值不能重複
set()可以把可迭代對象生成集合類型,並將刪除重複的值(可以利用這個特性,對某些對象去重)
基本操作

&            取交集
|            取並集
-            取差集

注意:

列表和字典在方法調用時是以引用的方式傳遞參數的,如果不希望在後面代碼中使用被調用方法修改後的值,可以在參數傳遞之前,使用深拷貝將值複製給另一個參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章