python 11期 第二天

一、三元運算


格式:

變量=值1 if 條件 else 值二


Example 1:

a=3

name = "wang" if a == 2 else "zhang"

print name


Example 2:

a=input("pls input a num: ")

print "OK" if a == 2 else "NO"


二、pycharm斷點調試:

先在關鍵地方打上斷點後,運行debug模式,此時到第一個斷點的行會顯示高亮,則表示此處將被執行,但尚未執行,再點下繼續,纔會執行此行;另外在下方會有一個Debugger窗口,此處放置此斷點處所有的變量值,Console窗口顯示的是執行的輸出結果。


三、python中一切皆對象

一切都是對象,對象是由類創建的。

比如列表的類list,比如:

mylist=[1,33,'wang']

mylist就是列表類的實例化,並且它還具有list類的所有功能,比如append,pop等。


通過type()查看對象的類型

通過dir()查看對象的所有功能

help()查看對象的源碼,詳細的功能。


四、數據類型的內置方法

1、int 整型


int型默認爲10進制,比如:

i=10

i=int(10)

也可以更改進制,如:

b=int("1101",base=2)

print "b is %s" % b


e=int("E",base=16)

print e


整型的內置功能,用dir()可以看到:

['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']


2、str 字符型

str的內置功能,用dir()函數可以看到:

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']


 常用功能:

1、首字母大寫

2、內容居中

>>> name='wang'

>>> name.center(30)

'             wang             '

>>> name.center(20,"*")

'********wang********'

3、找子序列個數

>>> name='wangwjfajewljfsjdfjgweljgweg'

>>> name.count("j")

6

查找name變量中j出現的次數。


4、編碼和解碼

UTF-8 -->解碼-->unicode -->編碼 -->UTF-8

GBK -->解碼-->unicode -->編碼 -->GBK

decode是解碼

encode是編碼


5、endswith:判斷以哪個字符串結尾。

>>> name='Bright'

>>> name.endswith('t')     #以t結尾的

True

>>> name.startswith('B')   ##以B開頭的。

True

6、expandtabs() 

把字符串中的一個tab鍵轉換成空格,默認爲8個,也可以指定個數:

name=' Bright'

print name.expandtabs()   #默認爲8個

print name.expandtabs(15)    #指定爲15個

print name.expandtabs(0)    #如果是0,表示刪除tab


查找字符串下標find:

>>> name='  Bright'

>>> name.find('g')       ##查找g的下標

5

>>> name.find('a')       ##返回-1表示沒找到

-1

第二種查找下標註index:

>>> name='Bright'

>>> name.index('r')

1

index找不到會報錯,find則不會報錯,它返回-1.

判斷是否爲字母或數字:

>>> name.isalnum()

True   #bool值

>>> name.isalpha()     ##判斷是否爲字母

True

>>> name.isdigit()      ##判斷是否爲數字

False


>>> a='23523'

>>> a.isdigit()

True

>>> name.islower()   ##判斷是否爲小字

False

>>> a='   '

>>> a.isspace()      ##判斷字符是否爲空格

True


>>> name

'i am is tian'

>>> name.title()      ##將字符變成標題

'I Am Is Tian'

>> b=name.title()

>>> b.istitle()      ##判斷是否爲標題

True

>>> b.isupper()     ##判斷字符是否全大寫

False


join 表示將列表變成字符串,指定連接符:

>>> li=["cheng","wang"]

>>> '@'.join(li)

'cheng@wang'


>>> name.ljust(30,'0')     #ljust表示左對齊,第一個參數表示長度,第二個填個充值

'i am is tian000000000000000000'   #rjust表示右對齊


>>> b

'I Am Is Tian

>>> b.swapcase()      ##將字符串大小寫轉換。

'i aM iS tIAN'


lower將字符大寫變小寫,upper將小寫變大寫。

strip表示將字符兩邊空格都移除,lstrip只移除左邊空白,rstrip移除右邊空白。

rfind從右邊開始查找,find是從左邊開始查找。



>> b

'I Am Is Tian'

>>> b.partition('Is')   ##用Is來分割字符串爲三部分,變成元組

('I Am ', 'Is', ' Tian')


>>> b

'I Am Is Tian'

>>> b.replace('Is','')  ##replace替換字符串中所有匹配項。

'I Am  Tian'


>>> c

'I Am Is Tian\nI Am Is Tian'    ##換行分割。

>>> c.splitlines()

['I Am Is Tian', 'I Am Is Tian']


對應錶轉換或刪除:translate

>>> import string

>>> intab='aeiou'

>>> outtab='12345'     ##intab和outtab是對應表,上下一一對應替換。

>>> trantab=string.maketrans(intab,outtab)      #maketrans將關係合併生成trantab

>>> str='this is string example,do you know'     #str爲字符串

>>> print str.translate(trantab,'sm')      ##trantab當成參數傳入,'sm'爲要刪除的字符。

th3 3 tr3ng 2x1pl2,d4 y45 kn4w


#######################################################################

字符串格式化:

 name="I am is {0},age is {1}"

>>> name.format('Bright',30)

'I am is Bright,age is 30'

以下方法也可以:

>>> name.format(nn='Bright',age=29)  #此處鍵值可以顛倒順序。

'I am is Bright,age is 29'

用列表傳參也可:加一顆*

>>> li=['Bright',32]

>>> name="I am is {0},age is {1}"

>>> name.format(*li)

'I am is Bright,age is 32'

用字典傳參:加兩顆*

>>> dic={"nn":"Bright","age":29}

>>> name="I am is {nn},age is {age}"   ##注意,此處字典的Key必須和這裏的形參相同

>>> name.format(**dic)

'I am is Bright,age is 29'



五、列表

增:append

li.append('new')

刪除:del li[1]  #按下標來刪除


統計指定元素的個數:count

>>> li=['ww','uu','yp','hh','ww','uu','ww']

>>> li.count('ww')

3


extend: 擴展列表,將兩個列表合併,如果把自己傳進去就表示列表內容翻倍。

>>> li2=[11,54]

>>> li.extend(li2)

>>> li

['ww', 'uu', 'yp', 'hh', 'ww', 'uu', 'ww', 11, 54]


index表示找到指定元素下標:

>>> li.index('yp')

2


insert表示在指定的位置插入元素。

>>> li.insert(4,'tian')

>>> li

['ww', 'uu', 'yp', 'hh', 'tian', 'ww', 'uu', 'ww', 11, 54]


pop表示刪除並返回指定下標的值,若不指定默認爲最後一個:

>>> li.pop()

54

>>>name= li.pop(4)

'tian'


remove通過指定元素來刪除,不返回值:

>>> li.remove('uu')

>>> li

['ww', 'yp', 'hh', 'uu', 'ww', 11]


#刪除列表中元素的方法有:pop,remove和del.


reverse表示給列表元素反轉位置:

>>> li.reverse()

>>> li

[11, 'ww', 'uu', 'hh', 'yp', 'ww']


sort表示排序,數字按從小到大,字母按ACSII碼來排序。

>>> li

[11, 'ww', 'uu', 'hh', 'yp', 'ww', 11, 'ww', 'uu', 'hh', 'yp', 'ww']

>>> li.sort()

>>> li

[11, 25, 'hh', 'hh', 'uu', 'uu', 'ww', 'ww', 'ww', 'ww', 'yp', 'yp']


六、元組

只有兩個方法:

index查詢下標

元組[0],通過下標查詢元素

count統計元組中元素出現的次數


元組的元素不能被修改,但是元組的元素的元素可以被修改,比如,元組中包括有列表或字典:

>>> tur

('wang', [11, 11, 25, 38, 'hh', 'hh', 'tian', 'uu', 'uu', 'ww', 'ww', 'ww', 'ww', 'yp'])

>>> tur[1].remove('ww')

>>> tur

('wang', [11, 11, 25, 38, 'hh', 'hh', 'tian', 'uu', 'uu', 'ww', 'ww', 'ww', 'yp'])

元組可以轉換爲列表:

>>> tu=(32,53,'wang')

>>> lis=list(tu)

>>> lis

[32, 53, 'wang']



七、字典

清除字典內容:clear

>>> dic2

{'chen': '1234', 'liu': '9876', 'wang': '4567', 'zhang': '1573'}

>>> dic2.clear()

>>> dic2

{}


淺拷貝:copy


get表示根據key獲取value:

>>> dic2.get('chen')

'1234'

如果指定key不存在,則返回None:

>>> print dic2.get('bright')

None

也可指定返回內容:

>>> print dic2.get('bright','不存在')

不存在


字典的key可以是字符、數字和類的實例,也可以是元組,但一般不用元組:

>>> dic2[4]='chang'

>>> dic2

{4: 'chang', 'wang': '4567', (3, 45): 'QWE', 'zhang': '1573', 'liu': '9876', 'chen': '1234'}


判斷一個對象是否爲字典:

>>> type(dic2) is dict

True


生成字典fromkeys:

>>> dic3

{}

>>> dic3.fromkeys([2,4,'ww'],'bright')

{'ww': 'bright', 2: 'bright', 4: 'bright'}


has_key表示判斷字典是否有指定的key:

>>> dic3

{4: 'chang', 'wang': '4567', 'zhang': '1573', (3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}

>>> dic3.has_key('wang')

True


items表示把字典中的每一組key value都指定到一個元組中然後再放入一個大列表中,可以用for循環提取key values:

>>> dic3.items()

[(4, 'chang'), ('wang', '4567'), ('zhang', '1573'), ((3, 45), 'QWE'), ('liu', '9876'), ('chen', '1234')]

>>> for x,y in dic3.items():

...     print x

...     print y

備註,此方法只適合小字典,數據量在十萬以上的字典不宜使用,可以使用以下方法:

>>> for x in dic2:print x ,dic2[x]

4 chang

wang 4567


iteritems和iterkeys、itervalues是迭代使用,在大數據循環中使用。

keys表示取鍵,values表示獲取全部的值。

product_dic={'apple':30,'peal':50,'banace':80}

##打印索引

product_dic.keys()    

['banace', 'peal', 'apple']

>>> product_dic.values()

[80, 50, 30]




pop表示刪除指定的key,並返回value的值。

>>> dic2.pop('wang')

'4567'


popitem表示隨便刪除一些key value值。

>>> dic2.popitem()

('zhang', '1573')

>>> dic2

{(3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}


setdefault查找字典中如果有該key則返回value,如果不存在,則自動設置,如果存在設置的value不生效,還是原來的:

>>> dic2

{(3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}

>>> dic2.setdefault('liu')

'9876'

>>> dic2.setdefault('wang','333')

'333'

>>> dic2

{'wang': '333', (3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}

>>> dic2.setdefault('wang','555')

'333'


update用於將兩個字典合併,如果有重複的key,則以update中的字典的value爲準:

>>> dic

{4: 'chang', 'wang': '4567', 'zhang': '1573', (3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}

>>> dic2

{'wang': '333', (3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}

>>> dic.update(dic2)

>>> dic

{4: 'chang', 'wang': '333', 'zhang': '1573', (3, 45): 'QWE', 'liu': '9876', 'chen': '1234'}


copy拷貝字典:

>>> for i in range(6):dic2[i]=[]

>>> dic2

{0: [], 1: [], 2: [], 3: [], 4: [], 5: []}

>>> dic2[1].append({"B":1})

>>> dic2

{0: [], 1: [{'B': 1}], 2: [], 3: [], 4: [], 5: []}

>>> dic4=dic2   #把一個字典中的值賦值給另一個字典

>>> dic4

{0: [], 1: [{'B': 1}], 2: [], 3: [], 4: [], 5: []}

>>> dic4['tian']='wang'   #當另一個字典發生改變時,原來的字典也會改變,如果是變量則不會。

>>> dic4

{0: [], 1: [{'B': 1}], 2: [], 3: [], 4: [], 5: [], 'tian': 'wang'}

>>> dic2

{0: [], 1: [{'B': 1}], 2: [], 3: [], 4: [], 5: [], 'tian': 'wang'}



八、集合:


>>> li

[1, 3, 'www', 53, 22, 1, 'www']

>>> set1=set(li)

>>> set1

set([1, 'www', 3, 53, 22])         ##集合功能之一,去重。集合是無序的

>>> a

set(['a', 'c', 'b'])

>>> b=set(['a','d','e','t'])

>>> a|b

set(['a', 'c', 'b', 'e', 'd', 't'])     ## | 豎線符號可以把a和b兩個集合數值連起來

>>> a-b

set(['c', 'b'])        ##a集合減b集合,會得到a裏有的數值b裏沒有。

>>> a^b

set(['c', 'b', 'e', 'd', 't'])   #對稱差積,將兩個集合中沒有的數值組合起來,將共同有的丟掉

>>> a & b

set(['a'])          ##只把a集合和b集合中共有的數據列出來

>>> b.add(54)         ##add給集合中增加數據

>>> b.add('ww')  

>>> b

set(['a', 'e', 'd', 'ww', 't', 54])

>>> b.update('ABC')       ##update會將數據分成單個字符添加到集合中,只能增加字符

>>> b

set(['a', 'A', 'C', 'B', 'e', 'd', 'ww', 't', 54])     

>>> b.remove('A')

>>> b.remove('B')

>>> b.remove('ww')

>>> b

set(['a', 'C', 'e', 'd', 't', 54])          ##remove刪除數據

>> set1

set([1, 'www', 3, 53, 22])

>>> set1.pop()

1

>>> set1

set(['www', 3, 53, 22])        ##pop爲隨機刪除集合中的數據並返回值

>>> set1.pop()

'www'

>>> set1

set([3, 53, 22])


判斷集合的子集和父集:

>>> set3

set(['www', 53])

>>> set1

set([1, 'www', 3, 53, 22])

>>> set3.issubset(set1)        #issubset用來判斷子集

True

>>> set1.issuperset(set3)    #issuperset判斷是否爲父集

True


















從下內容不明所以:

>>> dic2=dic2.fromkeys(range(6),[])

>>> dic2

{0: [], 1: [], 2: [], 3: [], 4: [], 5: []}

>>> dic2[1].append({"B":{}})  #此步驟是生成以下內容是由於fromkeys引起的。

>>> dic2

{0: [{'B': {}}], 1: [{'B': {}}], 2: [{'B': {}}], 3: [{'B': {}}], 4: [{'B': {}}], 5: [{'B': {}}]}



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