python常用語法2
Pycharm格式化程式碼方式
選擇工具欄的Code, 點選Reformat Code
或者使用快鍵鍵
Mac為:Command + Option+L
windows: Alt + ctrl + L
Python判斷兩個list相等
Python2可以使用cmp()函式,但是在Python3中我們可以使用下面的方法來比較兩個list是否相等
import operator
a=[1,-1,0]
b=[1,-1,0]
c=[-1,1,0]
print(operator.eq(a,b)) # True
print(operator.eq(a,c)) # False
注意:兩個列表必須完全相同(包括位置),只有這樣才能是True。
python合併兩個列表
直接使用‘+’運算子
a = [1, 2]
b = [1,2]
print(a + b) # [1, 2, 1, 2]
python - 從另一個列表中刪除出現在一個列表中的所有元素
l3 = [x for x in l1 if x not in l2]
等價於
l1 = [1, 2, 3, 4, 5, 6]
l2 = [3, 4, 6]
l3 = []
for num in l1:
if num not in l2:
l3.append(num)
print(l3) # [1, 2, 5]
參考:python 根據一個list的元素刪除另一個list中對應的元素、python - 從另一個列表中刪除出現在一個列表中的所有元素
list列表排序
sort()函式用於對原列表進行排序,如果指定引數,則使用比較函式指定的比較函式。
語法
sort()方法語法:預設按字典序排序
list.sort(cmp=None, key=None, reverse=False)
引數
- cmp -- 可選引數, 如果指定了該引數會使用該引數的方法進行排序。
- key -- 主要是用來進行比較的元素,只有一個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的一個元素來進行排序。
- reverse -- 排序規則,reverse = True降序,reverse = False升序(預設)。
參考:https://www.runoob.com/python/att-list-sort.html
python怎麼往一個元祖裡新增一個字串
現將字串用括號括起來,加個逗號,讓這個字串變成一個元祖,然後使用‘+’運算子相加即可。方法可推廣到將任何型別的物件新增到某個元祖。
total_records += record + ('test', )
元祖合併
兩個一維元祖怎麼合併
直接用'+'運算子拼接即可
a = (1, 2, 3)
b = (4, 5, 6)
c = a + b # c = (1, 2, 3, 4, 5, 6)
怎麼將一維元祖以整體的形式加入到一個二維元祖
在一層元祖外面套一層括號後,加一個逗號
a = ((1, 2, 3), (4, 5, 6))
b = (7, 8, 9)
c = a + (b, ) # c = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
怎麼將一維元祖的每個元素分別加入到一個二維元祖
直接用'+'運算子拼接即可
a = ((1, 2, 3), (4, 5, 6))
b = (7, 8, 9)
c = a + b # c = ((1, 2, 3), (4, 5, 6), 7, 8, 9)
不確定某個變數是一維元祖還是二維元祖,怎麼將它以二維元祖的形式加入到另一個二維元祖
先判斷該變數的第0項是否是元祖,如果是元祖則該變數是二維元祖,否則是一維元祖,如果是一維元祖,則在一層元祖外面套一層括號後,加一個逗號,與二維元祖相加;如果是二維元祖,直接相加
records = ((1, 2), (3, 4))
if isinstance(aa, tuple): # 如果第一項是元祖則說明aa是二維元祖
records += aa
else:
records += (aa, )
python遍歷資料夾下的所有檔案
listdir(path)函式,可以獲得path路徑下的所有檔案列表
import os
def getfiles():
filenames=os.listdir(r'E:\test')
print(filenames)
python檔案的讀寫
open(filepath, mode), 這個函式可以用來讀寫檔案,返回檔案的操作控制代碼,mode就是'w', 'r', 'a', 'w+', 'a+'等模式
fr = open('test.txt','r')
for line in fr:
print line
fr.close()
fw = open('test2.txt','w')
fw.write("hello world\nhello world!!") # 換行需要自己加入'\n'字元,沒有直接寫入一行的函式
fw.close()
參考:Python 檔案I/O、python每次讀取檔案一行輸出一行
python config檔案的讀寫
1、設定配置檔案
[mysql]
host = 1234
port = 3306
user = root
password = Zhsy08241128
database = leartd
2、讀取配置檔案
import configparser
import os
conf= configparser.ConfigParser()
def readConf():
'''讀取配置檔案'''
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
conf.read(root_path + '/ceshi/conf/app.conf') # 檔案路徑
print(conf)
name = conf.get("mysql", "host") # 獲取指定section 的option值
print(name)
3、寫入配置檔案
def writeConf():
'''寫入配置檔案'''
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
conf.read(root_path + '/ceshi/conf/app.conf') # 檔案路徑
conf.set("mysql", "host", "1234") # 修改指定section 的option
conf.write(open(root_path + '/ceshi/conf/app.conf', 'w'))
參考:python config檔案的讀寫、如何在python中讀取配置檔案
對時間的比較
兩個datetime物件直接做差,得到一個timedelta物件, 通過這個物件的seconds獲得秒鐘數,從而與目標時間進行比較
start = datetime.datetime(2021, 3, 31, 18, 0, 0)
end = datetime.datetime(2021, 3, 31, 21, 0, 0)
interval = end - sta rt
print(interval.seconds)
print(interval.seconds >= 3600*3) # 判斷兩個時間差是否超過半小時
datetime.timedelta怎麼格式化輸出
import datetime
start = datetime.datetime(2009,2,10,14,00)
end = datetime.datetime(2009,2,10,16,00)
delta = end-start
print(str(delta)) # prints 2:00:00
如果直接使用str()函式後結果帶有毫秒值,如'02:10:00.324', 如果想要去除毫秒值,使用split()函式擷取後取第一個元素
print(str(interval).split(".")[0])
字串split()函式
split()函式
語法:str.split(str=”“,num=string.count(str))[n]
引數說明:
str: 表示為分隔符,預設為空格,但是不能為空(”)。若字串中沒有分隔符,則把整個字串作為列表的一個元素
num:表示分割次數。如果存在引數num,則僅分隔成 num+1 個子字串,並且每一個子字串可以賦給新的變數
[n]: 表示選取第n個分片,也可以是[0,n]表示選取第0片到第n片,函式返回一個list。
把元素新增到不重複的list中
使用set()這個資料結構,可以保證存入的物件不重複,後面如果需要是list物件,使用list()方法強轉即可。
item = set()
item.add(1)
item.add(1)
item = list(item)
print(item) # [1]
參考:https://www.cnpython.com/qa/35356
Python time sleep()方法
time.sleep(t) , t 是 推遲執行的秒數。
import time
time.sleep( 5 )
python獲取物件型別
type()方法
var = dict()
print(type(var)) # <class 'dict'>
list或者set擷取片段
變數[頭下標:尾下標:步長]
步長省略則預設為1
python獲取當前路徑
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.abspath(__file__)))
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
python判斷輸入的內容是否為整數
num = input("請輸入整數:")
print(num.isdigit())
python判斷一個浮點數是否可轉換為整數
方式一:使用is_integer()函式
num = 4.0
num2 = 4.01
print(num.is_integer()) # True
print(num2.is_integer()) # False
方式二:與1做取餘運算
num = 4.0
num2 = 4.01
num3 = 0.0
print(num % 1 == 0) # True
print(num2 % 1 == 0) # False
print(num3 % 1 == 0) # True
參考:python 如何判斷一個數為整數?(判斷整數,沒有小數)(取餘)判斷整型 isinstance()
python判斷某個變數是否是某種型別
isinstance()
print(isinstance(1,int)) # 判斷1是否是int型別
print(isinstance(aa, datetime.datetime)) # 判斷aa變數是否是datetime.datatime型別