1. 程式人生 > 其它 >python常用語法2

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判斷兩個list相等

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遍歷資料夾下的所有檔案

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/Opython每次讀取檔案一行輸出一行

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)    # 判斷兩個時間差是否超過半小時

參考:【Python】datetime間的比較

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])

參考:python – 將timedelta格式化為字串

字串split()函式

split()函式

語法:str.split(str=”“,num=string.count(str))[n]

引數說明:

str: 表示為分隔符,預設為空格,但是不能為空(”)。若字串中沒有分隔符,則把整個字串作為列表的一個元素

num:表示分割次數。如果存在引數num,則僅分隔成 num+1 個子字串,並且每一個子字串可以賦給新的變數

[n]: 表示選取第n個分片,也可以是[0,n]表示選取第0片到第n片,函式返回一個list。 

參考:Python分割字串split()

把元素新增到不重複的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 time sleep()方法

python獲取物件型別

type()方法

var = dict()

print(type(var))    # <class 'dict'>

list或者set擷取片段

變數[頭下標:尾下標:步長]

步長省略則預設為1

參考:python列表list的擷取問題

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 判斷輸入是否為整數的程式

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型別