1. 程式人生 > >武sir第二講(2)基本資料型別

武sir第二講(2)基本資料型別

一、 數字

int(整形)

      在32位機器上,整數的位數為32位,取值範圍為-2**31~2**1-1,即-21474836482147483647
在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

++++++++++++++++++++++++++++++++++++++++++++++++++++

def bit_length(self):

“””表示返回該數字的二進位制佔用的最小位數”””

int.bit_length()-> int

案例:

int_bit = 37
ret = int_bit.bit_length()
print(ret)



答案:6
<span style="font-family:FangSong_GB2312;font-size:18px;">(解釋過程){
>>> bin(37)
 '0b100101'
 >>> (37).bit_length()
        6
 """
}
</span>

二、字串的引數(常用功能:移除,分割,長度,索引,切片)

1、

1defcapitalize(self):

“””首字母大寫”””

案例:
<span style="font-family:FangSong_GB2312;font-size:18px;">acc = “alex”
ret = acc.capitalize()
print(ret)
</span>

2defcenter(self,width,fillchar=None):

   “””內容居中,width:總長度;filchar:空白處填充內容,預設無 ”””

S.center(width[,fillchar]) -> string

案例一:

<span style="font-family:FangSong_GB2312;font-size:18px;">al = "acc"
ret = al.center(20)
print(ret)
結果預設是空格
      acc     
</span>

案例二:
<span style="font-family:FangSong_GB2312;font-size:18px;">al = "acc"
ret = al.center(20,"_")
print(ret)
結果:________acc_________
</span>

3def count(self,sub,start=None,end=None)

“””子序列個數”””

s.count(sub[,start[,end]])  -> int

案例:
<span style="font-family:FangSong_GB2312;font-size:18px;">acc = "alexadal"
ret = acc.count("al")
re = acc.count("al",2,10)
print(ret)
print(re)
 答案:2     1
</span>

4defdecode(self,encoding=None,errors=None)

“””解碼”””

 s.decode([encoding[,errors]])  -> object

案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">temp = “李傑”
temp_unicode = temp.decode(‘utf-8’)
意思是把utf-8解碼成unicode
</span>

5defencode(self, encoding=None, errors=None):

"""編碼,針對unicode """

"""

S.encode([encoding[,errors]])-> object

案例:

temp.gpk = temp.unicode(‘gbk’)

意思是把unicode在編碼成gbk格式

6defendswith(self,suffix,start=None,end=None)

“””是否以xxx結束”””

s.endswith(suffix[,start[,end]]) ->bool

 案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">name_a = "accp"
ret = name_a.endswith("ac",0,2)
print(ret)
   結果:True
</span>

7defexpandtabs(self,tabsize=None)

“””將tab轉換成空格,預設一個tab轉換成8個空格”””

 s.expandgtabs([tabsize]) -> string

 案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">name_b = "this is a \tasdf"
ret = name_b.expandtabs()
ac = name_b.expandtabs(tabsize=10)
print(ret)
print(ac)
結果:
this is a       asdf
this is a           asdf
</span>

8deffind(self,sub,start=None,end=None):

“””尋找子序列位置,如果沒有找到,返回 -1”””

s.find(sub[,start[,end]]) -> int

·  str -- 查詢的字串

·  beg -- 開始查詢的位置,預設為0

·  end -- 結束查詢位置,預設為字串的長度

      案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">str1 = "this is a string example ... wow"
str2 = "exam"
print(str1.find(str2))
print(str1.find(str2,10))
print(str1.find(str2,40))
答案:17	
17
-1  ----錯誤了find引數用-1表示,而index是報錯
str = "this is really a string example....wow!!!";
str1 = "is";
print str.rfind(str1, 0, 10);
</span>

9def indexself,sub,start=None,end=None:

“””子序列位置,如果沒找到,報錯”””

 s.index(sub[,start[,end]]) ->int

案例:
<span style="font-family:FangSong_GB2312;font-size:18px;">str1 = "this is a string example ... wow"
str2 = "exam"
ret = str1.index("strin",3)
print(ret)
print(str1.index(str2,10))
答案:10
      17
</span>

和find一樣,相對應的也有rindex

<span style="font-family:FangSong_GB2312;font-size:18px;">#!/usr/bin/python3
str1 = "this is really a string example....wow!!!"
str2 = "is"

print (str1.rindex(str2))
print (str1.rindex(str2,10))
------------------------------------------
5
Traceback (most recent call last):
  File "test.py", line 6, in <module>
    print (str1.rindex(str2,10))
ValueError: substring not found
</span>

10def format(*args,**kwargs):

  “””字串格式化,動態引數,將函數語言程式設計時細說”””

 s.format(*args,**kwargs)-> string

案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">s = "hello {0},world(1)"
print(s)
new1 = s.format("alex",19)
print(new1)
答案:hello {0},world(1)
hello alex,world(1)
</span>

案例二、

<span style="font-family:FangSong_GB2312;font-size:18px;">•	{name}:將被format()方法中關鍵字引數name代替
        >>> print '{c} {b} {a}'.format(a = 'efhdn', b = 123, c = 8.3 )
        8.3 123 efhdn
•	{或}:要輸出一個{或},必須使用{{或}}格式
        >>> print '{{中國}} 你好!'.format()
        {中國} 你好!
</span>

11defisalnum(slef):

              “”””是否是字母和數字””

              s.isalnum()  ->bool

       案例:
<span style="font-family:FangSong_GB2312;font-size:18px;">str = "this2009";  # No space in this string
print str.isalnum();

str = "this is string example....wow!!!";
print str.isalnum();
答案:
True
False
</span>

12defisalpha(self):

           “””是否是字母”””

 s.isalpha()-> bool

13defisdigit(self):

 “””是否是數字”””

s.isdigit() -> bool

14defislower(self):

   “””是否小寫”””

   s.islower()-> bool

15def isspace(self):

   “””是否只包含空格”””

s.isapce() -> bool

案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">str = "       "; 
print str.isspace();

str = "This is string example....wow!!!";
print str.isspace();
</span>

16defistitle(self):

“””檢測字串中所有的單詞拼寫首字母是否為大寫,且其他字母為小寫返回True,否則為False”””

a = “This Is A Sjsd”

a.istitle()  à bool

17defisupper(self):

  “””檢測字串是否為大寫”””

s.isupper() -> bool

18defjoin(self,itearble):

   “””連線”””

      s.join(iterable) -> string

案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">str1 = "_*"
str2 = ("a","b","c")
ret = str1.join(str2)
print(ret)
答案:a_*b_*c
</span>

19defljust(self,width,fillchar=None):

 “””內容左對齊,右側填充”””

s.ljust(width[,fillchar]) -> string

width ----指定字串長度

fillchar----填充字元,預設為空格

案例:

<span style="font-family:FangSong_GB2312;font-size:18px;">str = “this is sting exaple…wow”
ret = str.ljust(30,’*’)  #注意這個的fillchar要加引號,引起來
print(ret)
答案:
this is sting exaple…wow*******
		相對應的有函式rjust(右對齊,左填充),方法一樣
zfill也一樣
 def zfill(self, width):  
 """方法返回指定長度的字串,原字串右對齊,前面填充0。"""

 S.zfill(width) -> string
</span>

20deflower(self):

“””變小寫”””

s.lower() -> string

案例:

str_name1 = "MY NAME IS damon"
print(str_name1.lower())
答案:
my name is damon
相對應的是upper““變大寫”
up = "this is string example ...wow"
ret = up.upper()
print(ret)
答案
THIS IS STRING EXAMPLE ...WOW

21defpartitiong(self,sep):

“””””分割,前,中,後三部分”

s.partition(sep) -> (head,sep,tail)

案例:

str_name1 = "MY NAME IS domen"
ret = str_name1.partition("IS")
print(ret)
答案:
('MY NAME ', 'IS', ' domen')

22def lstrip(self,chars=None):

“””移除左側空白”””

s.lstrip([chars]) -> string or unicode

chars 表示指定擷取的字元

案例:

str_name2 = "    this is a string wow ...."
print(str_name2.lstrip())
str_name3 = "88888this is a string wow ... 888"
print(str_name3.lstrip("88888this"))
答案:
this is a string wow ....
 is a string wow ... 888

23def replace(self,old,new,coubt=None):

“”””替換””

s.replace(old,new[,count]) -> int

old 將被替換的子字串

new 新字串,用於替換old子字串

max 可選字串,替換不超過max次

案例:

str_name3 = "this is a example wow,this is a really example,is"
ret = str_name3.replace("is","si",2)
print(ret)
答案:
thsi si a example wow,this is a really example,is

24defsplit(self,sep=None,maxsplit=None):  _—————join相反(join是連線)

“””分割,maxsplit最多分割幾次”””

s.split([sep[,maxsplit]]) -> list of strings

str – 分隔符,預設為空格

num – 分割次數

案例:

str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print(str.split( ))
print(str.split(' ', 1 ))
print(str)
答案:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
Line1-abcdef 
Line2-abc 
Line4-abcd

25defsplitlines(self,keepends=False):

   “””根據換行分割”””

S.splitlines(keepends=False) -> list of strings

案例:

str_name5 = "this is a example wow \n yes,zhis is \n\n\n\n i don't"
print(str_name5.splitlines(3))
答案:
['this is a example wow \n', ' yes,zhis is \n', '\n', '\n', '\n', " i don't"]

26defstartswith(self,prefix,start=None,end=None):

“””是否起始”””

S.startswith(prefix[,start[,end]]) -> bool

案例:

str = "i like you "
ret = str.startswith("i",0,4)
print(ret)
答案:True

27defstrip(self,chars=None):

“””移除兩段空白”””

S.strip([chars]) -> string or unicode

案例:

str = "*****this is string example....wow!!!*****"
print (str.strip( '*' ))
答案:
this is string example....wow!!!

28defswapcase(self):

“”大寫變小寫,小寫變大寫””

S.swapcase() -> string

案例:

bxx = "THIS IS A EXSMPLE.."
ret = bxx.swapcase()
print(ret)
答案:
this is a exsmple..

29deftitle(self):

“””開頭首字母變大寫”””

S.title() -> string

案例:

tit = "THIS IS A EXSMPLE.."
ret = tit.title()
print(ret)
答案:
This Is A Exsmple..

30deftranslate(self,table,deletachars=None):--3.0沒有deletachars這個引數了

“轉換需要先做一個對應表,最後一個表示刪除字元集合”

  • table -- 翻譯表,翻譯表是通過maketrans方法轉換而來。
  • deletechars -- 字串中要過濾的字元列表。

S.translate(table[,deletechars]) -> string

案例:

intab = "aeiou"
outab = "12345"
transtab = str.maketrans(intab,outab)
str = "this is a string example ... wow"
ret = str.translate(transtab)
print(ret)
答案:
th3s 3s 1 str3ng 2x1mpl2 ... w4w

知識小點:

maketrans() 方法用於建立字元對映的轉換表,對於接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。

注:兩個字串的長度必須相同,為一一對應的關係。


maketrans用法

str.maketrans(intab,outab)

引數:

intab – 字串中藥代替的字元組合的字串

outab – 相應的對映字元的字串

三、列表(基本操作:索引,切片,追加,刪除,長度,切片,迴圈,包含)

建立列表:name_list = [‘alex’,’serven’,’eric’]

或 name_list = list([‘alex’,’serven’,’eric’])

1、 def append(self,p_object):

“”末尾新增””

語法:L.append(object) -----obj—新增到列表末尾的物件

案例:
list1 = ['google','baidu','nunoob']
list2= list1.append('tengxun')
print("更新後的列表 ",list1)#注:list2已經執行新增到了列表,打印出來肯定為空
答案:
更新後的列表  ['google', 'baidu', 'nunoob', 'tengxun']

2、def count(self,value):

“”統計某個元素在列表中出現的次數””

語法:list.count(obj) ---obj—列表中統計的物件

案例:

alist = [123,'xyz','zara','abc']
print('次數',alist.count(123))
print('次數:',alist.count('xyz'))
答案:
次數 1
次數: 1

3、def extend(self,iterable): 新單詞extend(擴充套件)

“””用於在列表末尾一次性追加另一個列表中的多個值(用新列表擴充套件原來的列表)”””

語法:list.extend(seq---元素列表)

案例:

list1 = ['google','runoob','taobao']
list2 = list(range(5))
list1.extend(list2)
print('擴充套件後的列表:',list1)
答案:
擴充套件後的列表: ['google', 'runoob', 'taobao', 0, 1, 2, 3, 4]

4def index(self):

“””用於從列表中找出某個值第一個匹配項的索引位置”””

語法:list.index(obj—查詢的物件)

案例:

alist = [123,'xyz','zara','abc']
print("Index for xyz:",alist.index('xyz'))
print('Index for zara',alist.index('zara'))
答案:
Index for xyz: 1
Index for zara: 2

5def insert(self,index,p_object):

“””函式將用於指定物件charu 列表”””

語法:list.insert(index,obj)

index,物件obj需要插入的索引位置

obj,要出入列表中的物件

案例:

list1 = ['google','baidu','ali']
list1.insert(1,'lol')
print('列表插入元素後:',list1)
答案:
列表插入元素後: ['google', 'lol', 'baidu', 'ali']

6defpop(self,index=None):

“””用於移除列表中的一個元素(預設最後一個元素)”””

語法:list.pop(obj=list[-1])

案例:

list1 = ['google','baidu','ali']
list1.pop()
print(list1)
list1.pop(-1)
print(list1)
答案:
list1 = ['google','baidu','ali']
list1.pop()
print(list1)
list1.pop(-1)
print(list1)

7def remove(self,value)

“””用於移除列表中的某個值的第一個匹配項”””

語法:list.remove(obj)

案例:

list_rm = ['google','baidu','ali']
list_rm.remove('google')
print(list_rm)

8defreverse(self):

“””用於反向列表中的元素”””

語法:list.reverse()

      案例:
list1 = ['baidu','google','ali','tengx']
list1.reverse()
print('見證奇蹟的時刻:',list1)

9defsort(self,cmp=None,key=None,reverse=False):

“””用於對原列表進行排序,如果指定引數,則使用比較函式指定的比較函式”””

語法:list.sort([func])

func ---可選引數,如果指定了該引數會使用該引數的方法進行排序

案例:

list1 = ['ali','Ali','Google','BAIDU','12']
list1.sort()
print(list1)
結果:


四、元組(tuple)

基本操作:索引、切片、迴圈、長度、包含

建立元組:

ages = (11,22,33,44,55)

ages = tuple((11,22,33,44,55))

內建函式:count和index

案例:

tup_1 = (11,22,33)
print(tup_1.count(33))
print(tup_1.index(22))
答案:1    1
五、字典

1clear

“”“用於刪除字典內的所有元素”“”

語法:dict.clear()

           案例:

dict = {'name':'zara','age':7}
print('start len:%d' % len(dict))
dict.clear()
print('start len :%d' % len(dict))
答案:
start len:2
start len :0

2get

“”“函式返回指定鍵的值,如果值不在字典中返回預設值”“”

語法:dict.get(key,default=None)

引數:key ---字典中要查詢的鍵

default – 如果指定鍵的值不存在時,返回該預設值

案例:

dict = {'google':'am','baidu':'chi','ali':'chi'}
print("值為:%s" % dict.get('google'))
print("值為:%s" % dict.get('yutube','em'))---如果字典中沒有則新增
答案:值為:am
值為:em

3in

“in操作符用於判斷是否存在於字典中,如果鍵在字典dict裡返回True,否則返回False”

語法:key in dict

案例:

dict = {'name':'alex','age':'18'}
ke = 'age'
kee = 'max'
if ke in dict:
    print("age的值存在")
else:
    print("age的值不存在")
if max in dict:
    print('max的值存在')
else:
    print('max的值不存在')
答案: age的值存在
max的值不存在

4keys

”“”python字典keys()方法以列表返回一個字典所有的鍵“”“

語法:dict.keys()

案例:
<pre name="code" class="python">dict ={'name':'runoob','age':'3'}
dict2 = dict.keys()
print(dict2)
答案:
dict_keys(['name', 'age'])


5pop

“”“同list一樣,刪除”“

dict = {'name':'runoob','age':'3'}
dict2 = dict.pop('age')
print(dict2)
print(dict)
答案:3
{'name': 'runoob'}

7、uptade

”“”函式把字典dict2的鍵/值對更新到dict裡(前面)“”“

語法:dict.update(dict2)

案例:

dict = {'name':'alex','age':'3'}
dict2 = {'max':'man'}
dict.update(dict2)
print('更新後的字典:',dict)
答案:
{'max': 'man', 'name': 'alex', 'age': '3'}