字符串
str.[]實現根據下標定位實現對元素的截取
for 循環可以實現遍歷
while 循環可以在實現遍歷的同時實現對某一下標數值的修改
字符串前加 r 可以實現對字符串的完整內容輸出
字符串前加 f 可以實現對字符串內{}中包裹內容的格式化輸出,僅在 v3.6 之后可用
對字符串使用*****、**+**實現字符串多次打印與字符串拼接
列表
列表定義
list = [“1”, “2”, “3”, 31, 431, “fengjiawei 最帥”, [“列表嵌套列表”]]
list.sort() 對列表進行排序,無返回值
list.sort(reverse = True) 對列表進行逆排序,無返回值
sorted(list) 直接返回排序后的列表
列表增
list.append(object)表示在列表最后加上某一對象,可以是列表也可以是別的元素類型
list1.extend(list2)表示將 list2 里的元素擴展到 list1 中去,list2 只能是列表
list.insert(1,object)表示在下標為 1 的位置加上 object
列表刪
list.remove(列表中的某一個元素)表示刪除列表中找到的符合該元素名稱的第一個元素
list.pop()表示彈出列表中的最后一個元素,返回值為彈出的元素
del list[下標] 表示刪除列表中的某一個元素
列表改
list[下標] = xxxx 表示直接對列表某一下標進行修改
列表查
in/not in
元素 in list 如果有返回 true,否則返回 false
list.index(要查找的元素,查找開始的位置,查找結束的位置+1)返回查找的第一個元素下標
# myList = ["a", "b", "c", "d"]
# for i, x in enumerate(myList): # 轉換為枚舉類型,使用枚舉函數,同時拿到列表中的下標和元素內容
# print(i, x)
列表推導式
列表推導式(List Comprehension)是一種語法結構,用于在Python中創建新的列表。語法格式如下:
expression for item in iterable if condition
expression
是一個表達式,用于定義新列表中的元素。item
是可迭代對象中的每個元素。iterable
是一個可迭代對象,例如列表、元組、字符串等。condition
是一個可選的條件表達式,用于篩選滿足條件的元素。
# 生成一個包含 1 到 10 的平方數的列表
squares = [x**2 for x in range(1, 11)]
print(squares) # 輸出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 生成一個只包含偶數的列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 輸出:[2, 4, 6, 8, 10]# 生成一個將字符串列表中的元素轉換為大寫的列表
words = ['apple', 'banana', 'cherry']
upper_words = [word.upper() for word in words]
print(upper_words) # 輸出:['APPLE', 'BANANA', 'CHERRY']
元組
元組最大的特性就是無法進行修改
tuple = (“avr”, “nn”, “faafa”, 2 , 1)
元組增
tup3 = tup1+tup2 進行元組連接
元組刪
del tuple 是刪除整個元組而不是刪除元組內的元素
元組改
元組內的元素無法進行修改
元組查
tup[下標]訪問對應元組元素
字典
字典是鍵值對的集合
dic{“key1” : “value1”, “key2” : “value2”}
字典中直接訪問不存在的鍵會報錯,如 dic[“key3”]
使用 get 方法訪問不存在的值不會報錯,會返回 None, 如 dic.get(“key3”)
還可以使用 get 方法設定不存在的鍵對應的值,如 dic.get(“key3”,“value3”)
值的注意的是,如果使用 get 方法得到原本的字典里相應的值了,那么 get 設定的值不會起作用,如 dic.get[“key1”,“value4”]返回值還是"value1"
字典增
直接增加相應的鍵值對即可
如 dic[“key3”] = “value3”
字典刪
del 刪除整個鍵值對或者直接刪除整個字典
del dic[“key1”]刪除第一個鍵值對
del dic 直接刪除整個字典
dic.clear()清除整個字典,使 dic 變為空字典{}
字典改
直接將相應的 value 賦值給對應的鍵上面就行
字典查
# print(dic.keys()) # 得到所有的鍵(列表)
# print(dic.values()) # 得到所有的值(列表)
# print(dic.items()) # 得到所有的項(列表),每個鍵值對是一個元組# 遍歷所有的值
# for key in info.keys():
# print(info[key])
# for key, value in info.items():
# print("key=%s,value=%s"%(key, value))
集合
set{1, 2, 3, 4}常用來進行集合相關的操作與 dic 類似,但不存儲 value,key 不重復
set 是無序的,重復元素在 set 中被自動過濾,并且從小到大以順序顯示
s = set([1, 2, 3, 3, 5])
s 為{1, 2, 3, 5}
集合增
set.add(key)向集合增加元素
set.update(set1)更新集合,其實質就是將集合 set1 中的元素加入 set 中
集合刪
set.remove(5)刪除某一元素
set.pop()彈出元素,返回值為彈出的元素(最小,在最左邊的元素)
set.clear()清除元素
del set 刪除集合
集合改
沒法改
集合查
for i in set:
print(i)
是否有序 | 是否可變類型 | |
---|---|---|
列表[] | 有序 | 可變類型 |
元組() | 有序 | 不可變類型 |
字典{} | 無序 | key不可變,val可變 |
集合{} | 無序 | 可變類型(不重復) |
函數
函數定義
def function()
全局變量與局部變量
函數內部是局部變量,外部是全局變量
優先使用函數內部局部變量,函數內部沒有局部變量則使用全局變量,可以在變量前加上 global 關鍵字來使用全局變量
常見函數
bin(int/long)返回二進制數
upper(string)返回大寫字符串
lower(string)返回小寫字符
title(string)首字母大寫
ord(string)返回 ASCII 碼
匿名函數
lambda函數的特點包括:
- 只能包含一個表達式,不能包含多個語句。
- 不能有函數體,因此沒有return語句,表達式的結果就是函數的返回值。
- 可以使用任意數量的參數,包括可選參數和默認參數。
- 可以將lambda函數賦值給一個變量,也可以直接調用lambda函數。
# 匿名函數只有一行,不需要函數體,基本格式為lambda arguments: expression
add = lambda x, y: x+y
print(add(3,2)) # 輸出結果為5
dic = lambda : defaultdic
print(dic) # <function <lambda> at 0x000001E89DFF6F70>
dic = lambda x, y : defaultdic
print(dic(3,4)) # <class 'collections.defaultdict'>
Zip函數
zip()是一個Python的內置函數,可以將多個可迭代對象(列表、元組等)按照索引位置一一配對,然后返回一個新的迭代器。
其常用的操作有:
遍歷多個可迭代對象
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for x, y in zip(list1, list2):
print(x, y) # 輸出:1 a, 2 b, 3 c
創建字典
keys = ['name', 'age', 'gender']
values = ['Alice', 25, 'Female']
person_dict = dict(zip(keys, values))
print(person_dict) # 輸出:{'name': 'Alice', 'age': 25, 'gender': 'Female'}
解壓縮操作
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(numbers) # 輸出:(1, 2, 3)
print(letters) # 輸出:(a, b, c)# 實例
import nltk # 引入NLTK庫
tagged_sents = nltk.corpus.brown.tagged_sents(tagset='universal')
# zip(*sent)生成的是一個可迭代的對象,其中將每個句子中的詞與標簽拆開分別組成了一對元組,再使用zip(*(zip(*sent)可以將多個句子中的詞組合成一個二階元組,標簽也是。
sents, postags = zip(*(zip(*sent) for sent in tagged_sents))
文件
f = open("文件路徑", "讀取方式")
f.close()
文件讀
f = open("xxx", "r")
f.readline() # 讀一行,光標移動到下一行第一個字節
f.readlines() # 讀所有行,按行為單位存儲在列表里
文件寫
f = open("xxx", "w")
f.write("xxxx") # 向文件內部寫入
文件操作 OS
import os
# os.rename("test1.txt", "test3.txt") # 重命名
# os.remove("test3.txt") # 刪除
# os.mkdir("張三") # 創建文件夾
# os.getcwd() # 獲取當前目錄
# os.chdir() # 改變目錄
# os.removedirs("張三") # 刪除當前目錄
錯誤和異常
try:print("-----------test1----------")f = open("123.txt", "r") # 用只讀模式打開了一個不存在的文件,報錯print("-----------test2----------") # 這句代碼不會執行print(num)
# except (IOError, NameError) as result: # 文件沒找到,屬于 IO 異常(輸入輸出異常),異常類型要被捕獲,需要一致
# print("-----------test3----------") # 捕獲異常后執行的語句except Exception as result: # 文件沒找到,屬于 IO 異常(輸入輸出異常),異常類型要被捕獲,需要一致,Exception 可以承接任何異常print("-----------test3----------") # 捕獲異常后執行的語句pass