一、三元運算
格式:
變量=值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': {}}]}