1. 程式人生 > >day1-6 字串、列表、元組、字典、型別轉換

day1-6 字串、列表、元組、字典、型別轉換

day1

1、python歷史。

巨集觀上:python2 與 python3 區別:
python2 原始碼不標準,混亂,重複程式碼太多,
python3 統一 標準,去除重複程式碼。

2、python的環境。

編譯型:一次性將所有程式編譯成二進位制檔案。
缺點:開發效率低,不能跨平臺。
優點:執行速度快。
:C,C++等等。

解釋型:當程式執行時,一行一行的解釋。
優點:開發效率高,可以跨平臺。
缺點:執行速度慢。
:python ,php,等等。

3、break:跳出迴圈    continue:到迴圈首

day2

 1、編碼

1bit     8bit = 1bytes
1byte     1024byte = 1KB
1KB      1024kb = 1MB
1MB      1024MB = 1GB
1GB      1024GB = 1TB

  最初是由美國人發明的ascii碼,為密碼本,後來發明了萬國碼“unicode”,可是代表漢子要佔用4個位元組,太大了;

  所以發明了utf-8、utf-16、utf-32,一個字元24為,3位元組

    utf-8:最少用一個位元組,8位表示一個英文;
        歐洲16位,兩個位元組

        亞洲24位,3個位元組

中國人發明了gbk,一箇中文16位去表示,2個位元組

    GBK:基於ascii研發的,只能支援中文和英文,不能喝utf-8直接轉換

2、邏輯運算:And、or、not

  • 優先順序:( )>not>and>or
  • int ——> bool  非零的轉換成bool為True  0轉換為bool是False
  • bool ——> int  True=1    False=0
  • print(x or y)  x 為 True時(非零為True),返回x  否則返回y
  • print(x and y)  x 為 True時        返回y  湊則返回x
  • print(1 or 2 and 3 or 1 > 2 and 5 )  找找類似這樣的規律  “我感覺看到or就行”

 day3

1、int

  • *.bit_length()    //求數字轉換為二進位制最小長度

2、轉換

 1 # bool True False
 2 # int ——> str
3 i = 1 4 s = str(i) 5 # str ——> int //只有數字可以轉換 6 s = '123' 7 i = int(s) 8 # int ——> bool //非零就是True,0位False 9 i = 3 10 b = bool(i) 11 # bool ——> int // True = 1, False = 0 12 ''' ps: 13 while True: 14 pass 15 while 1: # 效率高 16 pass 17 ''' 18 19 # str ——> bool //字串位空 = False,非空為True

3、str

 1 # 索引和切片
 2 s = "ABCDESDASDEG"
 3 
 4 s1 = s[0]           # 取出第一個字母(A)
 5 s2 = s[2]           # 取出第三個字母(B)
 6 s3 = s[-1]          # 取出倒數第一位(G)
 7 s4 = s[-2]          # 取出倒數第二位(E)
 8 # 切片:顧首不顧尾
 9 
10 s5 = s[0:3]         # 取出ABC
11 s6 = s[0:-1]        # 取出第一個到倒數第二個(ABCDESDASDE)
12 s7 = s[0:]          # 取出全部
13 s8 = s[:]           # 取出全部
14 # 跳著取[首:尾:步長]
15 
16 s9 = s[0:5:2]       # 第0個索引盜第5個索引,跳兩個取(ACE)
17 
18 # 倒著取
19 
20 s10 = s[3::-1]      # 取 DCBA
21 s11 = s[-1::-1]     # 逆序取全部
22 s12 = s[::-1]       # 逆序取全部
23 
24 # 字串操作
25 s = 'alex.egon.wusir'
26 s1 = s.title()              # 以字元和數字隔開的,其後的字母大寫 返回(Alex Egon Wusir)
27 
28 s = 'alexWUsir'
29 # 更改大小寫
30 s1 = s.capitalize()         # 首字母大寫,其它大寫的也變成小寫
31 s1 = s.upper()              # 全部變成大寫
32 s1 = s.lower()              # 全部小寫
33 s1 = s.swapcase()           # 大小寫翻轉
34 # 居中和製表符
35 s1 = s.center(20, "#")      # 設定一個20的長度,讓字串居中,預設用空格填充兩邊,可以使用其他符號,如"#"號
36 s1 = s.expandtabs()         # 如果字串中有“\t”則,在前邊的封8進行補位
37 # 字串的判斷
38 s1 = s.startswith("al")     # 如果是以什麼開頭,是返回True
39 s1 = s.startswith("e", 2)   # 從第二個字元到最後是不是以”e“開頭,是返回True
40 # 字串的查詢
41 s1 = s.find("W")            # 查詢字串中是否有某個元素,有的話返回索引;沒有返回-1
42 s1 = s.find("U", )          # 從第二個開始進行查詢,如果找到返回索引,找不到返回-1
43 s1 = s.index("U")           # 尋找元素,找到返回索引,找不到報錯
44 # 刪除空格
45 s1 = s.strip()              # 去除前後的空格
46 s1 = s.strip("@#$")         # 刪除字串中的前後@#$,不論順序
47 s1 = s.rstrip()             # 刪除右側
48 s1 = s.lstrip()             # 刪除左側
49 # 統計個數
50 s1 = s.count("a")           # 計數字符串中有幾個a
51 # 分割 str ——> list
52 s1 = s.split()              # 以空格分割為列表
53 # 公共方法,字典、列表、元組都可以用的
54 len(s)       # 測量總共有幾個元素
55 # 格式化輸入
56 s1 = "我叫{},今年{},愛好{},再說一次我叫{}".format('太白', 20, 'women', '太白')
57 s1 = "我叫{0},今年{1},愛好{2},再說一次我叫{0}".format('太白', 20, 'women')
58 
59 # 替換
60 s = '我的敬愛傻傻的啥大事傻傻卡號'
61 s1 = s.replace("傻傻", '聰明')          # 替換全部
62 s1 = s.replace("傻傻", '聰明', 1)       # 替換全部第一個
63 
64 # is系列
65 s = "asdla131"
66 s1 = s.isalnum()        # 是不是由字母或者數字組成
67 s1 = s.isalpha()        # 是不是由字母組成
68 s1 = s.isdigit()        # 是不是由數字組成
View Code

 day4

1、list

 1 li = ["alex", [1, 2, 3], "wusir", "egon", "女神"]
 2 # l1 = li[0]
 3 # l2 = li[1]
 4 
 5 #
 6 # 1、增加:list.append        //預設增加到最後
 7 # li.append("日天")
 8 # li.append(2)
 9 # 持續新增,想退出按q or Q
10 # while 1:
11 #     name = input(">>>")
12 #     if name.lower().strip() == "q":
13 #         break
14 #     else:
15 #         li.append(name.strip())
16 # 2、新增list.extent         //增加都最後
17 # li.extend("123")
18 # li.extend([1, 2, 3])
19 # 3、插入:list.insert       //按照索引插入
20 # li.insert(4, "大灰")
21 
22 #
23 # 1、li.pop           //按照索引去刪除,返回值為刪除的元素,為空預設刪除最後一個
24 # print(li.pop())
25 # 2、li.remove        //按照元素刪除,元素必須存在,否則報錯
26 # li.remove("egon")
27 # 3、li.clear         //刪除所有元素
28 # li.clear()
29 # del              //刪除列表,也可以切片刪除
30 # del li
31 # del li[0:2]
32 
33 #
34 # 1、直接改索引的值
35 # li[0] = 'hello'
36 # 2、切片改,選擇切片範圍,可以隨便改,可大於範圍,可小於範圍
37 # li[0:1] = "牛牛牛"
38 # li[0:2] = [1, "asd", '你好', [1, 2]]
39 
40 #
41 # 1、迴圈
42 # for i in li:
43 #     print(i)
44 # 2、切片
45 # print(li[0:3])
46 
47 # 公共方法
48 # print(len(li))
49 # print(li.count('egon'))
50 # print(li.index("wusir"))
51 
52 
53 li = [1, 64, 95, 55, 123]
54 
55 # li.sort()                   # 正向排序
56 # li.sort(reverse=True)       # 倒序排序
57 # li.reverse()                # 反轉
58 print(li)
list的增刪改查

2、list巢狀

1 li = ['taibao', '武藤蘭', '苑昊', ['alex', 'egon', 89], 23]
2 # print(li[1][1])     # 找到'藤'
3 li[0] = li[0].capitalize()  # ‘taibai’的首字母大寫
4 li[2] = li[2].replace("", '日天')

3、元祖

1 # tu = (1, 2, 3, ['mrxuan', 'qwer', 'zxcvb'], 'egon')
2 # tu[3][3] = tu[3][3].upper()
3 # tu[3].append("Q")
4 # print(tu)

4、字串和列表的轉換以及join的方法運用

1 # 列表 --> str    join
2 s = "-".join(["ni", 'hao', 'ya'])
3 print(s)
4 # 字串轉換為列表
5 li = '我 你 他 哈 her new'.split()
6 print(li)

5、range的用法

1 # range
2 
3 for i in range(0, 10):
4     print(i)
5 for i in range(10, 0, -2):
6     print(i)

day5

 1 # dict
 2 """
 3 資料型別劃分:可變資料型別,不可變資料型別
 4 不可變資料型別:元組,boolint,str     可雜湊
 5 可變資料型別:list,dict,set           不可雜湊
 6 dict key:必須是不可變資料型別  可雜湊
 7 dict value:任意資料型別
 8 
 9 dict 優點:
10         二分查詢
11         儲存大量的關係資料
12      特點:
13         無序的
14 """
15 
16 # dic = {
17 #     'name': ['大猛', '小孟'],
18 #     'py9': [{'num': 71, 'avg_age': 18}],
19 #     True: 1,
20 #     (1, 2, 3): 'wuyiyi',
21 #     2: '二哥'
22 # }
23 
24 # dic1 = {'age': 18, 'name': 'jin', 'sex': 'male'}
25 
26 # 增
27 # 1、 索引修改
28 # dic1['high'] = 185      # 沒有鍵值對,新增
29 # dic1['age'] = 16        # 如果有建,則值覆蓋
30 # 2、setdefault  鍵值對有的話,不做任何改變,沒有則新增
31 # dic1.setdefault('weight', 130)
32 
33 # 刪
34 # 1、pop  返回key的value
35 # print(dic1.pop('name'))
36 #     如果沒有則會報錯; 可以在逗號後邊新增一個引數,則不會報錯
37 # dic1.pop('aa')
38 # dic1.pop('aa', None)        # None可以自定義寫其他的,設定的引數將會成為pop的返回值
39 # dic1.popitem()      # 隨機刪除一個鍵值,返回一個刪除鍵值元組
40 # del dic1['name']    # 刪除
41 # del dic1              # 刪除字典
42 
43 # 改
44 # dic1 = {'age': 18, 'name': 'jin', 'sex': 'male'}
45 # dic = {'age': 18, 'name': 'alex', 'sex': 'male'}
46 # dic1.update(dic)      # 將dic的字典更新到dic1,有的話覆蓋,沒有則增加
47 
48 # 查
49 # print(dic1.keys())          # 所有的key
50 # print(dic1.values())        # 所有的value
51 # print(dic1.items())         # 所有字典的鍵值
52     # for i in dic1:
53     #     print(i)
54     # for i in dic1.keys():
55     #     print(i)
56     # for i in dic1.values():
57     #     print(i)
58     # for k, v in dic1.items():
59     #     print(k, v)
60 # print(dic1['name'])
61 # print(dic1['name1'])                  # 報錯
62 # print(dic1.get('name1'))                # 不報錯
63 # print(dic1.get('name1', '沒有這個鍵'))    # 果果沒有key則會返回後邊的str
64 # dic1.clear()          # 清空字典
65 
66 # print(dic1)
dict的增刪改查

 

 

 

小知識彙總

# = 賦值    == 比較     is 比較記憶體地址    id(內容):輸出記憶體地址

# 數字, 字串  定於小資料池,節省記憶體空間

# 數字的範圍:-5 -- 256之間的數字 會開闢一個記憶體空間

# 字串:

  1. 不含有特殊字元
  2. s * 20 還是同一個地址,s * 21 以後都是兩個,s為一個字元

 

編碼:
ASCII
A:00000010 8位 一個位元組
unicode
A:00000000 00000001 00000010 00000100 32 位 四個位元組
中:00000000 00000001 00000010 00000100 32 位 四個位元組
utf-8
A: 0010 0000 8位 1個位元組
中: 00000001 00000010 00000100 24 位 三個位元組
gbk
A: 00000110 8位 一個位元組
中: 00000010 00000110 16位 兩個位元組


1、個個編碼之間的二進位制,是不能互相識別的,會產生亂碼。
2、檔案的儲存、傳輸,不能使unicode(只能是ytf-8 utf-16 gbk gbk2313 ASCII)等


python3:
str 在記憶體中是用unicode編碼。
bytes型別:
    

 

        對於英文:
str : 表現形式:s = "alex"
編碼方式:010101010 unicode
bytes: 變現形式:s = b"alex" b代表bytes型別
編碼方式:000101010 utf-8 gbk.....
對於中文:
str : 表現形式:s = "中國"
編碼方式:010101010 unicode
         
1                 s = 'alex'
2                 s1 = b'alex'
3                 print(s,type(s))
4                 print(s1,type(s1))
            bytes:  變現形式:s = b"x\e91\e91\e91\e01\e21\e31\e32"    b代表bytes型別
編碼方式:000101010 utf-8 gbk.....
1           s = '中國'
2                 s1 = b'中國'
3                 print(s,type(s))
4                 print(s1,type(s1))
1 s1 = "alex"
2 # encode 編碼, str ——> bytes
3 s2 = s1.encode('utf-8')
4 s2 = s1.encode('gbk')
5 s10 = "中國"
6 s11 = s10.encode('utf-8')
7 s11 = s10.encode('gbk')