1 python-基礎

1. 數據類型和變量

  • 整數:0,-3, 3330xff00(十六進制)
  • 浮點數:0.4 ,1.23e9(1.23x109) , 0.000012可以寫成1.2e-5
  • 字符串:‘a’或“a”,用單引號和雙引號括起來,如果字符串中包括單、雙引號,用轉義字符 \'(\")表示,在命令行模式下換行用'''...''',str類型
  • 布爾值:and,or,not ;  and 與運算 都true爲true,or 或運算 都False爲false 其餘爲真, not 非運算 not false = true
  • 空值:none,注意這裏none不是0
  • 變量:字母、數字、下劃線組成的(且數字不能爲首字母)
  • 常量:用大寫表示 例如PI=3.14159265359
  • 除法:/(正常的除),//(取整除),%(取餘除)

2.字符編碼

  • 編碼類型:
類型特點大小
ASCII編碼支持大小寫英文字母、數字和一些符號1字節
UTF-8編碼
可變長編碼,節約存儲空間,ASCII編碼可以看做是UTF-8編碼的一部分,python中最常用

1-6字節,英文1字節,漢字3字節,生僻字4-6字節

Unicode編碼

所有語言統一編碼(大小寫英文字母、數字和一些符號用ASCII編碼,並在前補1字節的0)

2字節,生僻字4字節
  • 編碼轉換:在計算機內存中,統一用Unicode編碼,需要保存或者傳輸時,先轉換成UTF-8編碼再保存;瀏覽網頁時,服務器會將動態生成的Unicode編碼轉換成UTF-8編碼再傳輸到瀏覽器。
  • python字符串編碼:
  1. 採用Unicode編碼,支持多語言;
  2. 單字符:獲取編碼 ord('A') ,結果爲65 ;轉換成編碼chr(65),結果爲A;
>>> ord('A')65>>> ord('中')20013>>> chr(66)'B'>>> chr(25991)'文'

如果知道字符的整數編碼,可以用16進制直接表示,例如

>>> '\u4e2d\u6587'
'中文'
             3.python字符串轉變

由於python字符串是str類型,所以在存儲和傳輸時,要轉換成計算機識別的byte類型(一個字符對應着若干個字節);python中的字節用b+'字符串'表示,如b'asc',表示byte類型的字符串'asc','asc'表示str類型的字符串'asc',二者佔用字節數不同。

  • byte變成str:b'字符串'.decode()函數
  • str變成byte:'字符串'.encode()函數
  • 只能計算str中字符大小:len('字符串')函數
#!/usr/bin/env python3    # 告訴Linux/OS X系統,這是一個python可執行程序,Windows系統會忽略這個註釋
# -*- coding: utf-8 -*-   # 告訴python解釋器,採用UTF-8編碼讀取原文件,否則,在源代碼中寫的中文輸出可能會亂碼
>>> b'ABC'.decode('ascii')
'ABC'
>>> 'ABC'.encode('utf-8', errors='ignore')  #可忽略很少的錯誤
b'ABC'>>> len('ABC')3>>> len(b'ABC'.encode('utf-8'))

申明瞭UTF-8編碼並不意味着你的.py文件就是UTF-8編碼的,必須並且要確保文本編輯器正在使用UTF-8 without BOM編碼:

  • 格式化

1. 在python中格式化和c語言一樣,採用%?佔位來表示,%%表示一個%字符,其中%d,替換整數%f-浮點數,%s-字符串,%x-16進制數

>>> 'Hello, %s' % 'world'   #一個佔位符可省略括號
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'>>> '%02d-%07.2f' % (3, 3.1415926)   #格式化整數和浮點數還可以指定是否補0和整數與小數的位數:03-0003.14

2. 使用'{0:07.2f},{1}'.format(字符1,字符2)方法

>>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成績提升了 17.1%'

3. 使用list和tuple

  • list:類似於數組和棧的結合,元素類型可以不同,用[]初始化

>>> list_1 = ['Michael', 1, True]>>> list_1[-1] #取最後一個 倒數第二個爲[-2]True
>>> list_1[0]  #從0開始'Michael'
>>> list_2 = ['Michael', ['Bob','Marry'], 'Tracy'] #第二個位置代表list裏面包含另一個list,list的嵌套,>>> list_2[1][1]   #可以看作數組
'Marry'
>>> list_2.append['May']    #在list尾部追加'May'>>> list_2 ['Michael', ['Bob','Marry'], 'Tracy','May']
>>> list_2.insert(1,'Jack')  #在list第2個位置插入'Jack'>>> list_2 ['Michael', 'Jack', ['Bob','Marry'], 'Tracy','May']
>>> list_2.pop()             #刪除末尾元素
>>> list_2.pop(1)            #刪除第2個元素
>>> list_2 
['Michael', ['Bob','Marry'], 'Tracy']
>>> len(list_2)
3>>> list_1.sort()  #排序
  • tuple:和list使用方式一樣,不同的是tuple用()定義,並且它類似於靜態變量,一旦定義後不可更改,因此具有安全性,在python中能定義成tuple不定義成list。tuple可以嵌套list,list裏面的內容是可以增刪的。
>>> tuple_1 = (1, 2)
>>> tuple_1
(1, 2)
#定義空tuple>>> t = ()
>>> t
()
#定義1個元素,且元素是1 如果不加,則可以看做是(1),會產生歧義,因此加,消除歧義>>> t = (1,)
>>> t
(1,)
#tuple中的list可以改變,並且可以使用list的pop,append和insert函數,但是tuple中只允許使用tuple[][]來查看元素>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2].insert['c']
>>> t
('a', 'b', ['X', 'Y', 'c'])

4.條件判斷

  • if-else  只要遇到滿足條件就跳出條件語句

if <條件判斷1>:
    <執行1>
elif <條件判斷2>:
    <執行2>
elif <條件判斷3>:
    <執行3>
else:
    <執行4>

5.循環

  • for...in...循環:把list和Tuple中的元素迭代出來

names = ['Michael', 'Bob', 'Tracy']for name in names:    print(name)#結果Michael
Bob
Tracy

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)#結果55
sum = 0
for x in range(101):   #range(101)   生成從0到100的整數 
    sum = sum + x
print(sum)
#結果
5050

  • while循環:只要滿足條件,就循環,不滿足則退出

#打印100以內的奇數sum = 0n = 99while n > 0:    sum = sum + n    n = n - 2print(sum)

  • 退出循環:break:提前結束循環;continue:提前結束本次循環,繼續下一次循環;
  • 當遇到死循環時,Ctrl+c可退出

4. 使用dict和set

  1). dict(字典,dictionary):和map類似,定義了(鍵-值)對,使用(key-value)存儲,用{key1:value1,key2:value2}初始化;
  1. 和list比較,dict有以下幾個特點:
  • 查找和插入的速度極快,不會隨着key的增加而變慢;
  • 需要佔用大量的內存,內存浪費多。

而list相反:

  • 查找和插入的時間隨着元素的增加而增加;
  • 佔用空間小,浪費內存很少。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}>>> d['Michael']95
>>> d['Tracy'] = 67   #可以重新根據key賦值 並且key永遠是最後賦值的值>>> d['Tracy']67
#判斷key是否存在>>> 'Thomas' in d
False
>>> d.get('Thomas')         #返回none 但是在交互界面不顯示
>>> d.get('Thomas', -1)     #返回自己定義的值,說明不存在該KEY    
-1

2. 可以使用pop函數 d.pop(key),刪除鍵值對;

2). set:set可以看成數學意義上的無序和無重複元素的集合,定義爲 ([1,2,3]),兩個set可以做數學意義上的交集、並集等操作:

  • set.add(key):添加元素,也可添加重複項,但是會自動過濾

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

  • set.remove(key):刪除元素

>>> s.remove(4)
>>> s
{1, 2, 3}

  • set1&set2 取交集
  • set1|set2 取並集

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}






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